我们说我有一个Perl变量:
my $string = "40.23";
my $convert_to_num = $string * 1;
有没有办法可以找到这个浮点值的精度?到目前为止,我的解决方案只是循环遍历字符串,找到'的第一个实例。',然后开始计算多少小数位,在这种情况下返回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