PHP,将任意数字转换为浮点0.x


PHP, Convert any number to float 0.x

我需要做一件相当奇怪的事情,假设我有:

$number = rand(1, 9);

(这只是一个数字的例子,事实上我用完全不同的方式得到它)

现在我需要把这个数字"转换"成0.2或我得到的任何数字,基本上它必须从0开始,并且是float类型的数字。

PHP不支持变量声明中的显式类型转换。要将int转换为float,只需将其除以10:

$number = rand(1, 9) / 10;

有关更多信息,请参阅PHP类型杂耍页面。如果混合使用floatsints或其他类型,它们将被重新广播。示例:

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类型转换。