直接浮点数运算,会出现计算错误的情况,这不是语言的问题,而是计算机的问题。所以要尽量避免浮动点运算,避免不了要使用数学函数,涉及金钱的的时候,最好使用BCMath。
详情就不说明了,鸟哥有一篇文章说的很明白,下面给出地址,可以去看看。
鸟哥博客:关于浮点数的问题
Math函数地址:Math函数
BCMath地址:任意精度数学
-----------------------------------------------------------------------------------------------------------------------------------------
计算年月的时候,直接取了月份计算,比如01代表1月份,01减去1,结果计算正确,然后到了08-1或者09-1的时候, 就出错了,发现了问题。套用百度百科的一句话:一些编程语言中常常以数字0开始表明该数字是八进制。对,以0开始的代表是八进制,然而八进制只有0至7,没有8和9,所以当然出错啦。其他小伙伴遇到此类的问题时候也应该注意哦
$num1 = 01-1;//不出错
$num2 = 02-1;//不出错
$num3 = 03-1;//不出错
$num4 = 04-1;//不出错
$num5 = 05-1;//不出错
$num6 = 06-1;//不出错
$num7 = 07-1;//不出错
$num8 = 08-1;//出错
$num9 = 09-1;//出错