`
dank
  • 浏览: 28409 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

PHP中浮点数精度的警告

    博客分类:
  • PHP
阅读更多

这个是PHP document中给出来的提示:


简单的十进制分数如同 0.10.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。

floor(( 0.1 + 0.7 ) * 10)   返回 7 而不是8

(int)(( 0.1 + 0.7 ) * 10)  返回7而不是8.

 

对这种现象的解释是“因为该结果内部的表示其实是类似 7.9”。

 

所以得到的结论是:

所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。

决不要将未知的分数强制转换为Int。

 

(int)round( 0.1 + 0.7 ) * 10) 这样似乎就安全了。

在有大量乘除或者是中间值为float类型时,为了数值精度还是使用BC math函数了。

 

0
0
分享到:
评论

相关推荐

    简单谈谈php浮点数精确运算

    比如在初始的例子中,`bcadd($a, $b, 2)` 可以确保结果精确到小数点后两位,从而避免了浮点数精度问题导致的错误。 为了保证浮点数计算的精确性,开发人员应尽量避免依赖浮点数的直接比较,而是使用 BCMath 或 GMP...

    PHP下的浮点运算不准的解决方法

    在这个例子中,`bcadd`函数的第三个参数(2)指定了小数点后保留的位数,从而解决了浮点数精度问题,确保结果与预期相符。 在处理浮点数时,还需要注意以下几点: 1. **避免直接比较浮点数的相等性**:由于浮点数的...

    php如何比较两个浮点数是否相等详解

    在PHP中,比较两个浮点数是否相等是一项挑战,因为浮点数的表示方式存在精度问题。在计算机科学中,浮点数不是精确的,它们以二进制形式存储,这可能导致微小的误差。当两个看似相等的浮点数进行比较时,可能会因为...

    php7中文手册

    - **浮点数精度**:PHP7增强了浮点数的处理,减少了因浮点数运算导致的精度问题。 6. **其他改进**: - **空数组和 false 的优化**:在某些操作中,空数组和 `false` 会更快地得到处理。 - **内存限制的调整**:...

    php7.2开发手册.zip

    2. **浮点数比较**:PHP 7.2引入了更精确的浮点数比较,避免了由于浮点数精度问题导致的错误结果。 3. **类型声明增强**:现在可以为类属性添加类型声明,提高了代码的可读性和健壮性。 4. **废弃警告**:使用已废弃...

    php-7.2.13.tar.gz

    3. **浮点数精度提升**:PHP 7.2改进了浮点数的表示和计算,减少了由于浮点误差导致的问题。 4. **废弃警告**:PHP 7.2开始对一些旧的、不推荐使用的函数和特性发出警告,鼓励开发者使用更现代、更安全的替代方案。...

    PHP5 中文手册

    - **浮点数精度提升** - PHP5中的浮点数处理精度有所提高,减少了计算误差。 - **NULL 值的特殊性** - NULL 成为了一个独立的数据类型,可以表示变量没有被赋值。 **4. 文件系统操作** - **fileinfo 扩展** - ...

    PHP英文单词汇总.pdf

    30.double 和 real:在 PHP 中,double 是指双精度浮点数,而 real 则是指实数。 31.key 和 value:在 PHP 中,key 是指键,而 value 则是指值。 32.var_dump 和 gettype:在 PHP 中,var_dump 是指显示数据信息,...

    php的一些配置

    设置浮点数运算的精度,单位是小数位数。默认为`12`,对于需要高精度计算的应用,可根据需求调整此值。 #### 6. `y2k_compliance` 此配置项用于确保PHP能够正确处理千禧年问题,即日期格式转换时是否考虑2000年及...

    php代码-环境为 PHP7.2 版本

    - **浮点数精度**:在PHP 7.2中,浮点数的显示格式可以自定义,允许开发者更精确地控制浮点数的输出。 - **弃用警告**:PHP 7.2开始废弃一些旧函数,如`mysql_*`系列函数,鼓励开发者转向更安全的`mysqli`或`PDO`...

    php调试手册

    `printf`函数允许开发者以格式化的形式输出字符串,这对于调试浮点数和整数之间的转换非常有用。例如,在处理金融计算时,可能需要确保数值精度。 ```php $value = 10.0 / 3; echo "Value: " . $value . "\n"; // ...

    PHP 第二节 数据类型之数值型

    - 从浮点数转换为整型时,PHP会进行截断,取整数部分,不进行四舍五入,也没有警告或通知。 三、浮点型(float或double) 浮点型表示带有小数部分的数值。与整型相比,浮点型的精度会受到限制,通常精度为14位十...

    php数组函数序列之array_sum() - 计算数组元素值之和

    而如果数组中包含浮点数,则函数会返回一个浮点数作为结果,这保证了结果的精度。 值得注意的是,在PHP4.2.1之前的版本中,array_sum()函数会对传入的数组产生副作用,它会修改数组本身,将其中的字符串值尝试转换...

    详谈PHP基础与JS操作的区别(必看篇)

    - 双精度浮点数(double) - 小数(decimal) - 布尔型(bool) - 日期时间类型(datetime) - 字符串(string) PHP的数据类型: - 布尔型(bool) - 整型(int) - 浮点型(float 或 double) - 字符型(char) -...

    php coutlt;lt;的一点看法

    标题中的"php coutlt;lt;的一点看法"实际上是一个...总结来说,`std::cout`在C++中的输出行为受到数据类型、精度设置以及编译器限制的影响。理解这些原理有助于编写更精确、更可控的输出代码,并防止潜在的错误和问题。

    2021-2022计算机二级等级考试试题及答案No.452.docx

    4. **二维数组声明**:正确的二维数组声明方式是 `double a[3][4]`,这声明了一个3行4列的双精度浮点数数组。 5. **文件操作**:在文件操作中,open() 函数可以打开已存在的文件,但并不会自动加载文件内容到内存。...

Global site tag (gtag.js) - Google Analytics