首页 > 解决方案 > Perl 中的简单加法导致结果偏离小部分

问题描述

#!/usr/bin/perl

  $a = 1;

  while ( $a <= 50 ) {
    print "$a\n";
    $a += 0.025;
  }

非常简单的代码。

但这是输出的样子......

2.225
2.25
2.275
2.3
2.325
2.35
2.375
2.4
2.42499999999999
2.44999999999999
2.47499999999999
2.49999999999999
2.52499999999999
2.54999999999999
2.57499999999999

一切都很好,直到 2.42499999999999。

4.32499999999999
4.34999999999999
4.37499999999999
4.4
4.425
4.45
4.475
4.5

然后恢复正常。

它不断在人们所期望的和偏离一小部分之间交替。

这是什么原因造成的?

49.8249999999982
49.8499999999982
49.8749999999982
49.8999999999982
49.9249999999982
49.9499999999982
49.9749999999982
49.9999999999982

标签: perlmathadditionfloating-accuracy

解决方案


推荐阅读