$val=9.45;
$result=$val*100;
echo $result0; //44
?
提问者很奇怪,为什么上面的输出记忆不是想象中的45而是44。 如果你是:
echo 9450 //45
那么结果应该是45。 这是因为php默认情况下对变量进行四舍五入并进行剩余运算。
请看下面的php代码。
/*
//*
*这是在官方评论中找到的任意数量上取余数的函数的实现。 (往下看,写的是10年。 )
* my _ bcmod-get modulus (substituteforbcmod ) )。
* string my _ bcmod (string left _ operand,int modulus ) )。
* left_operand can be really big,but be carefull with modulus : (
* byandriusbaranauskasandlaurynasbutkus : ) 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;
}
wile(Strlen ) $x;
返回(int ) $mod;
}
//example
$a='7044060001970316212900 ';
$b=150;
echomy_bcmod($a,$b ).PHP_EOL;
echobcmod($a,$b ).PHP_EOL;
echo $a % $b;
* name: mckee
* blog: http://www.phpddt.com
*/
$val=9.45;
$result=$val*100;
echointval($result; //这里输出944
echo $result0; //在此为输出44
echofmod(floatval ) $result,100 ); //在此为输出45
?
对于大整数,php可能会溢出并返回负数。 (这是因为php默认使用整数取余数,所以转换为float型() )。)。