在php中将float转换为int时丢失的数据

时间:2013-10-08 03:57:08

标签: php int

我的代码:

$baseprice=1705000/1.1;
var_dump($baseprice);
$parseprice=intval($baseprice);
var_dump($parseprice);

结果:

float(1550000) int(1549999)

正如你所看到的,当我从float转换为int时丢失了1个数字,在哪里,这种情况下转换的解决方案没有丢失数据,谢谢。

4 个答案:

答案 0 :(得分:3)

您使用的浮点数会失去精确度(请参阅this link)。

如果您正在处理货币使用整数并以美分,便士,芬尼或其他方式工作。在显示之前转换为货币格式。

答案 1 :(得分:3)

解决方案如下

$baseprice=1705000/1.1;

var_dump($baseprice);

$parseprice=intval(ceil($baseprice));

var_dump($parseprice);

输出:

  

float(1550000)int(1550000)

答案 2 :(得分:1)

问题是在计算浮点数时,我仍然不知道为什么它们有不同的如下

$baseprice= 1705000/1.1 ; // 1550000

var_dump( decbin( $baseprice )); 
var_dump( decbin(1550000)); 

我们可以通过

解决这个问题
$baseprice = round( $baseprice );

答案 3 :(得分:0)

在浮动到整数值之前,您可以转换为int

$baseprice=1705000/1.1;

var_dump($baseprice);
//Before float to integer round the value then you can convert to int
$baseprice =round($baseprice);

$parseprice=intval($baseprice);
var_dump($parseprice);