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

php减法145.48 – 80.26!= 65.22 [复制]

发布时间:2020-12-13 17:26:21 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 The accuracy of PHP float calculate????????????????????????????????????1个 我遇到了PHP的问题. 下面的这个确切的减法是错误计算的. ?php$test = 145.48 - 80.26;if($test != 65.22) echo 'not good !';else echo 'good';? 这回应“不好”!
参见英文答案 > The accuracy of PHP float calculate????????????????????????????????????1个
我遇到了PHP的问题.
下面的这个确切的减法是错误计算的.

<?php

$test = 145.48 - 80.26;

if($test != 65.22)
    echo 'not good !';
else
    echo 'good';

?>

这回应“不好”!!!

为什么?

解决方法

计算机不是很擅长存储浮点(十进制)数字,因为在二进制中表示基数10十进制数很难.例如,如果您尝试将数字0.2存储为二进制,则计算机将按照模式0.00110011 …存储一系列.根据浮点数的大小(即在内存中为其分配了多少位),精度会有所不同,但更重要的是,它永远不会精确地存储0.2.

有几种方法可以解决这个问题,一种是使用BC Math库并执行以下操作:

bcsub("145.48","80.26");

但有时更好的解决办法就是承认数字不准确并说明错误,即

if (abs($x - $y) < $e)

其中e是一些非常小的数字,例如10 ^( – 5).这在使用物理计算等时是常见的做法,但当然在处理离散数字时,你不应该尝试这种做法,例如:货币.

(编辑:李大同)

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

    推荐文章
      热点阅读