【问题标题】:Issue while adding the numbers in PHP [duplicate]在 PHP 中添加数字时出现问题 [重复]
【发布时间】:2017-10-11 19:55:32
【问题描述】:

在 PHP 中添加两个数字得到意想不到的结果,例如这个

$a=115.40;
$b=120.25;
$c=4.85;
echo ($a-$b)+$c;

结果

-5.3290705182008E-15

这些数字可能是整数或浮点数

【问题讨论】:

  • 你期待什么结果?
  • $a、$b 和 $c 等于什么?它们被定义为什么
  • @ThisGuyHasTwoThumbs 问题已更新
  • 由于叶点在一般计算中的工作方式的性质,它们不会完全是您期望的结果。您现在看到的是浮点大约为零,但不完全为零。您可以将其格式化为零,例如:3v4l.org/P70iL
  • sprintf('%6.3f',($a-$b)+$c); 等于 0

标签: php


【解决方案1】:

如果你添加浮动,你可以有这样的解决方案。 请查看Manual:

此外,可以精确表示为以 10 为底的浮点数的有理数,如 0.1 或 0.7,不具有以 2 为底的浮点数的精确表示,无论尾数大小如何,它都在内部使用.因此,它们不能被转换成它们内部的二进制对应物,而不会有小的精度损失。这可能会导致令人困惑的结果:例如, floor((0.1+0.7)*10) 通常会返回 7 而不是预期的 8,因为内部表示将类似于 7.9999999999999991118....

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-18
    • 2020-01-08
    • 2021-01-20
    • 2021-05-22
    • 1970-01-01
    • 2015-06-09
    • 2020-07-11
    • 1970-01-01
    相关资源
    最近更新 更多