在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);