php数字精度问题

  1. 不要用浮点数进行比较和数学运算转化为整型运算
var_dump((0.1 + 0.7) == 0.8);//boolean false
var_dump((0.1 + 0.7) * 10 == 0.8 * 10);//boolean false
var_dump((0.1 + 0.7) * 100 == 0.8 * 100);//boolean true
echo intval(0.58 * 100);//57
echo intval(0.58 * 1000);//580
  1. 试用bcmath库(php自带)
var_dump(bcadd(0.1, 0.7, 1) == 0.8);//boolean true

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

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

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

bcmod — 求高精度数字余数

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

bcpow — 求高精度数字乘方

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

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

bcsqrt — 求高精度数字平方根

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本文是对论文《The Z1: Architecture and Algorithms of Konrad Zuse...
    逸之阅读 4,929评论 15 12
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,683评论 0 13
  • int intval ( mixed $var [, int $base ] ) 通过使用特定的进制转换(默...
    君满楼001阅读 8,669评论 0 2
  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,932评论 9 66
  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,875评论 0 5

友情链接更多精彩内容