PHP int+float.错误或默认行为


PHP int + float. Bug or default behavior?

如果小数部分为0,这是将FLOAT数字格式化为INT的函数。

$formatted = (int)$i + $i - (int)$i;
// $i = 15.12 , $formatted = 15.12
// $i = 15.00 , $formatted = 15

但这似乎是PHP中的一个错误。我在PHP手册中没有找到INT+FLOAT操作的类型转换。在其他语言中,比如C++INT+FLOAT=FLOAT。

<?php
$i = 15.00;
$formatted = (int)$i + $i - (int)$i;
var_dump($formatted);

float(15)

它仍然是一个浮子。

00没有显示的原因是因为它正好是15。

如果你知道这个数字正好是15,但你不知道它来自哪里,那么你就不能假设它有任何精度。

例如,您是否期望$f=(float)15;显示15.00?不,当然不是。同样的概念也适用,只是在你期望15.00的上下文中。

此外,您可能会发现number_format()或round()很有用,除非这只是一个实验。