2

假设我有一个 Perl 变量:

my $string = "40.23";

my $convert_to_num = $string * 1;

有没有办法可以找到这个浮点值的精度?到目前为止,我的解决方案是简单地遍历字符串,找到“。”的第一个实例,然后开始计算小数位数,在这种情况下返回 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 回答