2

私がPerl変数を持っていたとしましょう:

my $string = "40.23";

my $convert_to_num = $string * 1;

このfloat値の精度を見つける方法はありますか?これまでの私の解決策は、文字列をループして「。」の最初のインスタンスを見つけ、小数点以下の桁数を数え始めることでした。この場合は2を返します。この種のものにもっとエレガントな機能や組み込みの機能があったのではないかと思っています。ありがとう!

4

2 に答える 2

4

$nstringの「期間後の数」に対する回答は次のとおりです。

length(($nstring =~ /\.(.*)/)[0]);

一致する部分が最初にを見つけます。(\。)、それから他のすべてに一致します(。*)。。*は括弧で囲まれているため、最初の配列要素([0])として返されます。次に、length()関数を使用してその数を数えます。

于 2012-07-05T20:07:43.627 に答える
2

Perl で単純な変数を使用して行うことはすべて、使用するコンパイラとハードウェアに依存します。精度が本当に気になる場合は、使用してください

use "Math::BigFloat";

そして、必要なプロパティを設定します。桁数は、Math::BigFloat ではより適切に精度と呼ばれます。

use Math::BigFloat;

Math::BigFloat->accuracy(12);
$n = new Math::BigFloat "52.12";

print "Accuracy of $n is ", $n->accuracy(), " length ",scalar($n->length()),"\n";

戻ります

52.1200000000 の精度は 12 長さ 4
于 2012-07-05T18:33:54.103 に答える