php取余函数,php 取余数详解

$val=9.45;

$result=$val*100;

echo $result%100; //44

?>

提问者奇怪,为什么上面输出的记过是44 而不是想象中的45  ,如果你这样:

echo  945%100  //45

那么结果应该是45的,这是因为php默认对变量进行取整进行取余运算的。

然后看看下面的php代码:

/*

/**

* 这个在官方评论中找到的一个对任意数取余的函数实现(看了下是10年写下的)

* my_bcmod - get modulus (substitute for bcmod)

* string my_bcmod ( string left_operand, int modulus )

* left_operand can be really big, but be carefull with modulus :(

* by Andrius Baranauskas and Laurynas Butkus :) Vilnius, Lithuania

**/

function my_bcmod( $x, $y )

{

// how many numbers to take at once? carefull not to exceed (int)

$take = 5;

$mod = '';

do

{

$a = (int)$mod.substr( $x, 0, $take );

$x = substr( $x, $take );

$mod = $a % $y;

}

while ( strlen($x) );

return (int)$mod;

}

// example

$a = "7044060001970316212900";

$b = 150;

echo my_bcmod($a, $b ).PHP_EOL;

echo bcmod($a, $b).PHP_EOL;

echo $a % $b;

* name: mckee

* blog: http://www.phpddt.com

*/

$val=9.45;

$result=$val*100;

echo intval($result); //这里输出944

echo $result%100; //这里输出44

echo fmod(floatval($result),100); //这里输出45

?>

对于大整数,php会出现溢出,可能返回负数情况(这是因为php默认使用整数取余的,所以你要把它转换成float类型(如上))可以这样做:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值