php - PHP 数学差异
问题描述
这是一些简单的数学运算,并没有完全加起来。
990 / 7670 = 0.12907431
假设我想收取 1% 的费用,我从 1000 开始。
相同的数学适用于上面(1000 - 1% = 990)
首先:
990 / 7670 = 0.12907431
然后使用我的原始数字(+1%):
1000 / 0.12907431 = 7747.4750785
最后为了抵消 1000 的 1% 减少。我将 7670 增加 1%
7670 * 1.01 = 7746.7
:。
为什么最后两个值有 0.01% 的差异?这个 PHP 处理小数很糟糕吗?
我看不出我在哪里失去了它,我觉得数学是对的。我知道 PHP 有时会出现舍入问题,我想知道它是否就这么简单,或者我是否错过了一个 obv 数学问题。
解决方案
990 + 1% 不等于 1000。它等于 999.9。
990 * 1.01 = 999.9
话虽这么说- 你永远不能依赖像这样的不同浮点计算来准确地评估正确的答案。与其他语言一样,PHP 没有“舍入问题”,而是使用与实数的行为方式不同的浮点数。
推荐阅读
- kubernetes - 如何删除 Kubernetes 中特定类型的所有机密?
- ansible - Ansible:是否可以在没有密码的情况下从控制节点连接 Windows 远程服务器(使用 winrm)?
- azure - Exchange Web 服务 - 未经租户管理员同意发送电子邮件?
- javascript - Angular从组件中获取嵌套属性
- if-statement - 为什么我的程序无法识别这个“if”语句?
- python - 为什么 opencv 没有完全清理上一帧中绘制的内容?
- python - Sphinx 仅包含包含文档字符串的类和函数
- javascript - 为每个字符设置字母间距 Html Css
- angular - 通过 Gridster2 减小拖动项目的大小
- javascript - Basic-ftp 451-传输中止