PHP高精度函数

平时在做开发的时候,会遇到计算结果出错的问题,明明计算的方法正确,但结果不对。

比如0.58*100,得到的是57.99999999999999,而不是58

出现这种情况,并不是PHP的bug,而是二进制浮点计算的问题,各种语言都存在这个问题。

具体原理自行搜索,这里就不细讲,下面列出PHP这边的解决方案,使用高精度函数

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

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

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

  bcmod — 求高精度数字余数

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

  bcpow — 求高精度数字乘方

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

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

  bcsqrt — 求高精度数字平方根

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 最大支持3位精度计算,具体还没有研究 bcadd — 将两个高精度数字相加 bccomp — 比较两个高精度...
    会写bug的鸟阅读 4,540评论 0 1
  • int intval ( mixed $var [, int $base ] ) 通过使用特定的进制转换(默...
    君满楼001阅读 12,700评论 0 2
  • 不要用浮点数进行比较和数学运算转化为整型运算 试用bcmath库(php自带) bcadd — 将两个高精度数字相...
    sorry510阅读 5,319评论 0 2
  • 因为最近要做一个图表,x轴的叠加为0.1,但是在进行浮点类型比较时出现一个头疼的问题,废话不说请看以下案例 以上代...
    胡乱唱歌ing阅读 4,468评论 0 1
  • 坦白讲我不是一个负责人的家长,因为我自己身上的种种问题需要去成长去完善;但是我希望通过我的学习可以成为负责人的家长...
    希多乐阅读 5,130评论 0 0