2010-07-17 107 views
12

我将19/5除以我已使用19/5但我无法获得剩余的只有仅从使用PHP的分部获得剩余部分

我该如何得到它。

感谢 让

+8

为什么19%5没有返回你之后的东西 - 这应该返回4. – 2010-07-17 19:37:24

+0

返回四舍五入的值,即4 – X10nD 2010-07-17 19:39:55

+3

@Jean:但这正是19除以5的剩余部分。此外,为什么你回滚我的编辑你的错字? – BoltClock 2010-07-17 19:40:28

回答

17

请尝试它 -

$tempMod = (float)($x/$y); 
    $tempMod = ($tempMod - (int)$tempMod)*$y; 
+0

-1 OP想要PHP,而不是C或者Java或者其他语言。 – BoltClock 2010-07-17 19:37:44

+5

但是它的一个逻辑:( – Sadat 2010-07-17 19:41:07

+2

感谢编辑。我撤销了我的downvote。 – BoltClock 2010-07-17 19:44:06

60
echo 19 % 5; 

应该返回4,这是的19/5(3 REM 4) 没有必要使用剩余地板,因为模数运算的结果总是一个整数值。

如果你想在剩余浮点值的工作时,那么PHP也有FMOD()函数:

echo fmod(19,5.5); 

编辑

如果你想其余为十进制:

要么

echo 19/5 - floor(19/5); 

echo (19 % 5)/5 

都将返回0.8

+0

我只需要十进制值 – X10nD 2010-07-17 19:42:11

+2

为了记录,最后提到的技术是最快的,因为执行的浮点运算更少。 – mattbasta 2010-07-21 02:44:19

+0

感谢,它太棒了! – 2014-07-04 04:59:58

4

取决于你所使用的语言,%未必是模运算符。我假设你使用PHP,在这种情况下,它是%

从我所看到的,没有必要使用整数模数floor(),它将始终返回一个整数。你可以安全地删除它。

对我来说,它看起来不像是给你地狱的数学,而是它周围的代码。你需要发布更多的代码;你列出的代码很好。

编辑:

你不是找余,你要寻找的遗留十进制值。它没有名字。

$leftover = 19/5; 
$leftover = $leftover - floor($leftover); 

这应该是你在找什么。

+0

我只需要十进制的值 – X10nD 2010-07-17 19:41:33

+0

它被称为分数。 – aross 2014-12-16 14:07:27