资讯专栏INFORMATION COLUMN

PHP浮点精度问题

FreeZinG / 1207人阅读

摘要:使用计算浮点数的时候,可能会遇到一些计算结果错误的问题,如下输出解决办法输出提供了高精确度函数库处理此问题将两个高精度数字相加将两个高精度数字相减将两个高精度数字相乘将两个高精度数字相除比较两个高精度数字,返回求高精度数字余数求高精度数

使用php+ - * /计算浮点数的时候,可能会遇到一些计算结果错误的问题,如下:


解决办法


php提供了BC高精确度函数库处理此问题

bcadd — 将两个高精度数字相加

bcsub — 将两个高精度数字相减

bcmul — 将两个高精度数字相乘

bcdiv — 将两个高精度数字相除

bccomp — 比较两个高精度数字,返回-1, 0, 1

bcmod — 求高精度数字余数

bcpow — 求高精度数字乘方

bcpowmod — 求高精度数字乘方求模,数论里非常常用

bcscale — 配置默认小数点位数,相当于就是Linux bc中的”scale=”

bcsqrt — 求高精度数字平方根

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22869.html

相关文章

  • PHP变量类型

    摘要:获取变量的类型,使用函数。要检验某个类型,可以使用函数,如是在整形是在浮点型是在字符串如果需要将一个变量强制转换为某类型,可以对其使用强制转换或者函数。自起,此限制仅对包含变量时有效。 简介 PHP支持9种原始数据类型。 4种标量类型: boolean布尔型 integer 整形 float 浮点型(也称作double) string 字符串 3种复合类型: array...

    selfimpr 评论0 收藏0
  • PHP处理数学精度

    摘要:后来我看了下,确实有这么一个扩展库,处理任意精度数字,对于任意精度的数学,提供了支持用字符串表示的任意大小和精度的数字的二进制计算。 用编程语言做计算,很多时候浮点数精度都是困扰过我的问题,即便是刚学PHP的新手也会在群里问为什么我的计算结果明显不对,而我们总是老态龙钟的丢出一句浮点数计算都存在精度问题,并没有提出过什么实质性的改善。比如下面的计算 0.57*100: zhgxun-p...

    chaos_G 评论0 收藏0
  • php易错笔记-类型

    摘要:非法下标类型会产生一个级别错误。用负数下标写入字符串时会产生一个级别错误,用负数下标读取字符串时返回空字符串。浮点数也会被转换为整型,意味着其小数部分会被舍去。 Boolean 当转换为 boolean 时,以下值被认为是 FALSE:布尔值 FALSE 本身整型值 0(零)浮点型值 0.0(零)空字符串,以及字符串 0不包括任何元素的数组[]特殊类型 NULL(包括尚未赋值的变量)从...

    tinyq 评论0 收藏0
  • 系统的讲解 - PHP 浮点数高精度运算

    摘要:浮点数类型包括单精度浮点数和双精度浮点数。小结通过浮点数精度的问题,了解到浮点数的小数用二进制的表示。以后,在使用浮点数运算的时候,一定要慎之又慎,细节决定成败。 概述 记录下,工作中遇到的坑 ... 关于 PHP 浮点数运算,特别是金融行业、电子商务订单管理、数据报表等相关业务,利用浮点数进行加减乘除时,稍不留神运算结果就会出现偏差,轻则损失几十万,重则会有信誉损失,甚至吃上官司,我...

    makeFoxPlay 评论0 收藏0
  • 关于 JavaScript 浮点运算的精度解决方案

    摘要:原因至于问题产生的原因,或者关于问题的更详细的描述,大家请看下面几个文章浮点运算浮点值运算舍入误差基础浮点数四则运算精度丢失问题解决方案这里主要讨论一下解决方案的问题,上面几篇文章的解决思路,都是重写加法减法乘法和除法运算。 问题背景 在 chrome 浏览器中调出开发者工具,在控制台窗口输入下面的表达式: 0.1 + 0.2 // 期望:0.3,结果:0.300...

    jsyzchen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<