2008-09-08 67 views

回答

66
$x = $x - floor($x) 
+0

这将不起作用,当你处理的浮点数如= 0.25 – 2012-09-06 12:14:44

+81

$ x = fmod($ x,1); – primo 2012-10-12 06:43:22

3

我的PHP技能缺乏,但你可以减去从原来的号码

9

地板的结果如果,如果是负数,你必须这样做:

$x = abs($x) - floor(abs($x)); 
12

不要忘记,你不能相信浮点运算是100%准确的。如果你担心这一点,你会想看看BCMath Arbitrary Precision Mathematics函数。

$x = 22.732423423423432; 
$x = bcsub(abs($x),floor(abs($x)),20); 

你也可以砍的字符串自己

$x = 22.732423423423432;  
$x = strstr ($x, '.'); 
8

由nlucaroni提供的答案将仅适用于正数工作。对于正面和负面的数字作品的一个可能的解决方案是:

$x = $x - intval($x) 
1

但是,如果你正在处理像柏林噪声或其他图形表示,这是接受的解决方案是正确的。它会给你从较低数字的小数部分。

即:

  • .25:0是整数下面,小数部分0.25
  • -.25:-1以下的整数,小数部分0.75

随着其他的解决方案,您将以下面的整数重复0,更糟糕的是,对于所有负数,您将得到反转的小数值。

1

某些前面的答案是部分的。这一点,我相信,是你所需要的处理所有情况:

function getDecimalPart($floatNum) { 
    return abs($floatNum - intval($floatNum)); 
} 

$decimalPart = getDecimalPart($floatNum); 
6
$x = fmod($x, 1); 

这里有一个演示:

<?php 
$x = 25.3333; 
$x = fmod($x, 1); 
var_dump($x); 

应该ouptut

double(0.3333) 

Credit.

相关问题