我需要做一件相当奇怪的事情,假设我有:
$number = rand(1, 9);
(这只是一个数字的例子,事实上我用完全不同的方式得到它)
现在我需要把这个数字"转换"成0.2
或我得到的任何数字,基本上它必须从0开始,并且是float
类型的数字。
PHP不支持变量声明中的显式类型转换。要将int
转换为float
,只需将其除以10:
$number = rand(1, 9) / 10;
有关更多信息,请参阅PHP类型杂耍页面。如果混合使用floats
和ints
或其他类型,它们将被重新广播。示例:
echo 10 + 2.5; // gives you 12.5, a float because of the types used
编辑:PHP有显式类型转换,只是不在变量声明中。但是,即使将整数强制转换为浮点,它也不会显示为小数位数。要做到这一点,请使用PHP的number_format
函数:
echo number_format(10, 1); // gives you 10.0
编辑2:如果您只想将数字设为0到1之间的小数(例如2变为0.2,25变为0.25等),您可以使用以下函数:
function getNumAsDecimal($num) {
return ($num / pow(10, strlen((string)$num)));
}
因此getNumAsDecimal(2)
将返回0.2
。
function Floatize(){
return (float) (rand(1, 9) / 10);
}
echo Floatize(); // will return something like 0.2 or 0.5 or 0.9
$number=(float)rand(1,9)/10;
请参阅PHP类型转换。