PHP浮点数转int精度丢失?

简介: PHP浮点数转int精度丢失?

<?php

$a = 0.58;

var_dump(intval($a * 100)); //输出int(57)

可以看出原本结果应该是58的,但是使用了函数intval() 和 (int) 之后结果居然变为了57了,这是由于浮点类型的数字不能在不丢失一点儿精度的情况下通过内部二进制转换得到结果的,换句话说就是浮点类型的计算都会丢失精度的。

解决方案需要先使用strval() 函数将变量转成字符串类型。

<?php

$a = 0.58;

var_dump(intval( strval($a * 100))); //输出int(58)

先转化成字符串类型,然后在转化为int类型即可。


相关文章
|
PHP
php自动将数字字符串转换为int / float
php自动将数字字符串转换为int / float
70 0
|
Python
Python浮点数转整数int、round、ceil、floor
Python浮点数转整数int、round、ceil、floor
119 0
|
Python
Python浮点数转整数int、round、ceil、floor
Python浮点数转整数int、round、ceil、floor
113 0
|
PHP
PHP数学函数实践四:将浮点数从零舍入到指定的小数位数
哈喽~今天我将给大家继续之前的PHP数学函数实践系列的文章,那么在上一篇《PHP数学函数实践三:随机函数rand()的巧妙运用》中给大家介绍了怎么使用rand()函数,感兴趣的朋友可以学习了解~ 本文带来PHP数学函数实践四!主要内容则是讲解如何将浮点数从零舍入到指定的小数位数? 首先给大家简单介绍下PHP中的浮点数是什么? 浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:
186 0
|
存储 PHP
为什么php的浮点数运算不准确
例子: //例子 $a = 10.601; $b = 10.6009; echo $a- $b; // 结果如下 0.00010000000000154 结果错误,why? why 根本原因, 在某些情况下, 2 进制无法精确表示 10 进制的小数部分。
1614 0
|
PHP
php浮点数计算比较及取整不准确解决方法
原文:php浮点数计算比较及取整不准确解决方法 php有意思的现象,应该是很多编程语言都会有这样的现象。这个是因为计算机的本身对浮点数识别的问题..... [php] view plaincopy   $f = 0.
1076 0
|
8月前
|
关系型数据库 MySQL PHP
PHP 原生操作 Mysql
PHP 原生操作 Mysql
82 0
|
8月前
|
关系型数据库 MySQL 数据库连接
PHP 原生连接 Mysql
PHP 原生连接 Mysql
108 0