在Perl中获得浮点精度?

时间:2012-07-05 18:05:44

标签: string perl floating-point decimal

我们说我有一个Perl变量:

my $string = "40.23";

my $convert_to_num = $string * 1;

有没有办法可以找到这个浮点值的精度?到目前为止,我的解决方案只是循环遍历字符串,找到'的第一个实例。',然后开始计算多少小数位,在这种情况下返回2。我只是想知道这种事情是否有更优雅或内置的功能。谢谢!

2 个答案:

答案 0 :(得分:4)

以下是$ nstring

中“句点之后的事物数量”的答案
length(($nstring =~ /\.(.*)/)[0]);

匹配部分首先找到。 (\。),然后匹配其他所有(。*)。由于。*在括号中,因此它作为第一个数组元素([0])返回。然后我计算了length()函数的数量。

答案 1 :(得分: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";

将返回

Accuracy of 52.1200000000 is 12 length 4