【问题标题】:PHP acting weird on my program [duplicate]PHP在我的程序上表现得很奇怪[重复]
【发布时间】:2013-09-10 06:55:15
【问题描述】:

今天我开始写一个小的 PHP 代码,它让我很困惑,所以我停在这里。

<?php
echo (int) ((0.5 + 0.3) * 10); // Outputs 8 as expected

<?php
echo (int) ((0.1 + 0.7) * 10); // Outputs 7 . How ????

有人可以详细解释一下吗?

【问题讨论】:

  • 欢迎来到计算机浮点世界
  • aaah,浮动数字的乐趣( 0.7 实际上类似于 0.69999999999999 ) - 编辑:并在 php 中进行转换?这不是被人看不起吗?我的意思是大多数人认为无类型是 php 中最糟糕(糟糕 + 真棒)的事情
  • 回声 (int) (0.1 + 0.7) * 10;
  • 我发现这个:floating-point-gui.de 比 Oracle 更好。

标签: php casting echo


【解决方案1】:

这是因为计算机中的浮点表示对于某些数字来说并不精确。正如 cmets 中已经说过的,0.7 在内部表示为 0.699999 左右。

有两个网站不断弹出这类问题:

  1. http://floating-point-gui.de/
  2. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

我更喜欢第一个,因为它在学术上稍微轻松​​一些。阅读该信息,您就会明白。

【讨论】:

    猜你喜欢
    • 2015-09-14
    • 2019-10-14
    • 2016-07-17
    • 2013-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多