在PHP中获得float的小数部分的最好方法是什么?
简单的一点:如何findPHP中浮点数的小数部分? 例如,如果我有值1.25,我想返回0.25。
$x = $x - floor($x)
不要忘记,你不能相信浮点运算是100%准确的。 如果您担心这个问题,您可以查看BCMath任意精度math函数。
$x = 22.732423423423432; $x = bcsub(abs($x),floor(abs($x)),20);
你也可以自己破解这个string
$x = 22.732423423423432; $x = strstr ( $x, '.' );
nlucaroni提供的答案只适用于正数。 对于正数和负数都有效的解决scheme是:
$x = $x - intval($x)
如果数字是负数,则必须这样做:
$x = abs($x) - floor(abs($x));
$x = fmod($x, 1);
这是一个演示:
<?php $x = 25.3333; $x = fmod($x, 1); var_dump($x);
应该ouptut
double(0.3333)
信用。
我的PHP技能是缺乏的,但你可以减去从原来的数字的地板的结果
但是,如果您正在处理诸如珀林噪声或其他graphics表示的问题,则接受的解决scheme是正确的。 它会给你从较低数字的小数部分。
即:
-
.25
:0是以下整数,小数部分是.25 -
-.25
:-1是以下整数,小数部分是.75
与其他解决scheme,您将重复0作为下面的整数,更糟糕的是,你会得到所有负数反转分数值。
前面的一些答案是部分的。 我相信这是你需要处理所有情况的:
function getDecimalPart($floatNum) { return abs($floatNum - intval($floatNum)); } $decimalPart = getDecimalPart($floatNum);