关于math函数的floor与round的区别
Math.round:如果参数是小数,则求本身的四舍五入。Math.ceil:如果参数是小数,则求最小的整数但不小于本身.
Math.floor:如果参数是小数,则求最大的整数但不大于本身.
Math.floor(302.4*100)=30329
Math.floor(402.4*100)=40240
为什么会这样?到底怎么取最的? --------------------编程问答--------------------
这个要问微软的。。。。 --------------------编程问答-------------------- --------------------编程问答-------------------- Math.floor(302.4*100)=30239
Math.floor(402.4*100)=40240
这个确实奇怪,换成其他数字都是240 --------------------编程问答-------------------- 首先Math.Round不是四舍五入算法而是Banker算法...
其次如果你不知道IEEE 754浮点数误差问题就该去补习计算机原理课程... --------------------编程问答-------------------- Math.floor(302.4*100
==> Math.Floor(浮点数 * 100)
定义的double,float.. 等浮点数就会这样.
因为这些类型的数本身就不是整型数字,浮点数跟精度相关.
你看到的是302.4 实际储存的是浮点数 302.39999999999... ...
如果是这样:Math.Floor(new decimal(302.4) * 100) 就等于 30240
补充:.NET技术 , ASP.NET