加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用Perl拆分浮点数

发布时间:2020-12-15 23:24:24 所属栏目:大数据 来源:网络整理
导读:为什么我使用拆分会失去精度? 我的目标是获得所有部分的小数部分. $a = 123456789.123456789;@b = split(/./,$a);$baseDec = "." . $b[1]; 上面给出了$baseDec == .123457 但这给出了正确的精确度: 这是正确的方法吗?更正:这给了同样糟糕的精确度! ??
为什么我使用拆分会失去精度?
我的目标是获得所有部分的小数部分.

$a = 123456789.123456789;
@b = split(/./,$a);
$baseDec = "." . $b[1];

上面给出了$baseDec == .123457

但这给出了正确的精确度:
这是正确的方法吗?更正:这给了同样糟糕的精确度!
??我没有正确测试代码.抱歉!

$a = 123456789.123456789;
@b = split(/./,$a);
$baseInt = $b[0];
$baseDec = $a - $baseInt;

我应该使用Math :: BigFloat吗?

编辑:$a应为字符串$a =“123456789.123456789”;然后原始代码工作.直到我弄清楚如何使我的Perl与longdouble一起工作,我无法测试原始问题.答案似乎是我失去了精度,因为$a存储在一个double(52位~15位十进制数字,如下面的@Ben所述). print $a给出123456789.123457.

解决方法

如果您要将其视为字符串,请一直这样做.你不会在没有引用的情况下分配字符串,对吧?

my $a = "123456789.123456789";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读