假设我有一个 Perl 变量:
my $string = "40.23";
my $convert_to_num = $string * 1;
有没有办法可以找到这个浮点值的精度?到目前为止,我的解决方案是简单地遍历字符串,找到“。”的第一个实例,然后开始计算小数位数,在这种情况下返回 2。我只是想知道这种事情是否有更优雅或内置的功能。谢谢!
假设我有一个 Perl 变量:
my $string = "40.23";
my $convert_to_num = $string * 1;
有没有办法可以找到这个浮点值的精度?到目前为止,我的解决方案是简单地遍历字符串,找到“。”的第一个实例,然后开始计算小数位数,在这种情况下返回 2。我只是想知道这种事情是否有更优雅或内置的功能。谢谢!
这是 $nstring 中“期间后的事物数量”的答案
length(($nstring =~ /\.(.*)/)[0]);
匹配部分首先找到 。(\.),然后匹配其他所有内容 (.*)。由于 .* 在括号中,因此它作为第一个数组元素 ([0]) 返回。然后我用 length() 函数计算有多少。
您在 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