Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Perl中获得浮点的精度?_String_Perl_Floating Point_Decimal - Fatal编程技术网

String 在Perl中获得浮点的精度?

String 在Perl中获得浮点的精度?,string,perl,floating-point,decimal,String,Perl,Floating Point,Decimal,假设我有一个Perl变量: my$string=“40.23” my$convert_to_num=$string*1 有没有办法找到这个浮点值的精度?到目前为止,我的解决方案是简单地循环字符串,找到“.”的第一个实例,然后开始计算小数位数,在本例中返回2。我只是想知道是否有一个更优雅的或内置的功能为这类事情。谢谢 使用纯变量在Perl中执行的任何操作都将取决于所使用的编译器和硬件。如果你真的关心精度,使用 use "Math::BigFloat"; 并设置所需的属性。在Math::BigFl

假设我有一个Perl变量:

my$string=“40.23”

my$convert_to_num=$string*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 52.1200000000的精度为12长度4 下面是对$nstring中“周期后的事件数”的回答

length(($nstring =~ /\.(.*)/)[0]);

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

沿着这条路走下去就是疯狂。除了少数特殊情况外,将十进制精度指定给数字的浮点表示形式是徒劳的。执行此代码并重新考虑您的问题:
perl-e'printf“%.*f\n”、$,“40.23”代表14,15,41'
我无法无错误地运行该代码?在阅读问题时,问题不在于根据存储为浮点或大浮点的值计算小数位数,而在于计算输入数字小数点后出现的位数。也就是说,一个字符串已经被读取,问题在于字符串处理,而不是数值计算。对吗?没错,是的。我只是想知道是否有内置函数或标准解决方案来返回数字和/或字符串中的小数位数。我在上面的研究和我提出的解决方案之后找不到任何东西。精度与小数位数有什么关系?问题是我无法设置它。我正在读取Excel电子表格中的单元格,只想读取电子表格中的内容,而不是设置自己的全局限制。是什么阻止您读取电子表格中的值并将其作为大浮点数存储在内部?我认为这取决于程序员如何处理从外部源接收的数据。是的,我同意,我正在这样做。但我还需要存储的一个字段是小数位数。length()运算符告诉我小数位数。(在这种情况下,4)谢谢你的帮助,这正是我要找的!