【发布时间】:2012-07-05 18:05:43
【问题描述】:
假设我有一个 Perl 变量:
my $string = "40.23";
my $convert_to_num = $string * 1;
有没有办法找到这个浮点值的精度?到目前为止,我的解决方案是简单地遍历字符串,找到“。”的第一个实例,然后开始计算小数位数,在这种情况下返回 2。我只是想知道这种事情是否有更优雅或内置的功能。谢谢!
【问题讨论】:
-
沿着这条路走下去就是疯狂。为数字的浮点表示分配小数精度是徒劳的,除非在少数特殊情况下。执行此代码并重新考虑您的问题:
perl -e 'printf "%.*f\n", $_, "40.23" for 14,15,41' -
我无法正常运行该代码?
-
当我阅读问题时,问题不是从存储为浮点数或 BigFloat 的值计算小数位数,而是计算输入中小数点后出现的位数数字。也就是读取了一个字符串,问题是字符串处理的问题,不是数值计算的问题。对吗?
-
就是这样。我只是想知道是否有内置函数或标准解决方案来返回数字和/或字符串中的小数位数。经过研究和上面提出的解决方案后,我找不到任何东西。
-
精度与小数位数有什么关系?
标签: string perl floating-point decimal