首页 > 编程知识 正文

从float到int很可能丢失数据,float相加丢失精度

时间:2023-05-03 10:31:42 阅读:182306 作者:1756

今天有问题。 $19.99转换为内部货币时的比率为1:100,因此乘以100后的结果为1999。 但是,在订单信息的说明中将数据变换为int。 (由于使用json_encode处理包含该float数值字段的数组,因此不确定。 )这个数值为1998。 原本float和int的计算机二进制存储方式就不同。

参考:

3359 www.cn blogs.com/classnotfoundexception/p/6198805.html 3359 zhuan.zhi Hu.com/p/100353781解决方法:首先使用strval

33559 www.PHP.net/manual/zh/function.intval.PHP

是什么? PHP///observethefollowingechointval (strval (-0.0001 ) ); //0echointval(strval(-0.00001 ); //-1//thisisbecauseechostrval (-0.0001; //0001echostrval(-0.00001 ); //- 1.0e-5//thusbewarewhenusingfunctiontrunc2_ bad ($ n ) {returnintval(strval ) $n*100 )/100; (/usethisinsteadfunctiontrunc2_ good ) ($n ) (返回安装(floatval ) strval($n*100 ) ) ) ) ) 此外,官方还给出了一些处理任意精度数字的常用函数,例如:

bcadd — 2两个任意精度数字的加法计算

bccomp —比较任意精度的两个数值

bcdiv — 2两个任意精度的数值除法计算

bcmod —对任意精度的数值建模

bcmul — 2两个任意精度数字乘法计算

bcpow —任意精度数字的幂

bcpow mod—raiseanarbitraryprecisionnumbertoanother,reduced by a specified modulus

bcscale —设置所有bc数学函数的默认小数保留位数

bcsqrt —任意精度数字的平方根

bcsub — 2减去两个任意精度数字

参考: https://www.PHP.net/manual/zh/ref.BC.PHP

author :学习指导

本文地址: https://blog.csdn.net/leedan ing/article/details/103074520

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。