关于PHP里的floor()取整函数

吕秀才 发布于 2014/01/09 16:32
阅读 894
收藏 1
PHP

最近在做第三方支付遇到一个问题,就是在向第三方的支付公司提交订单数据的时候,其中有一个订单的金额,而这个金额是以美分为单位的,而我们这边的订单是以美元为单位,所以,这时候,我们会*100,然后传递过去,但是第三方支付公司的接口规定,这个金额必须是整数,是不能有小数的,所以,需要使用取整下,我这里使用的是PHP的floor()函数,如下:


<?php
echo floor(9.99 * 100) . "<br />";
echo floor(18.99 * 100) . "<br />";
echo floor(10.32 * 100) . "<br />";
<?php
结果:
999
1898
1032

我有点不理解,为什么floor(18.99*100) 返回的结果是1898,我查了下手册,说这个函数返回的结果就是不大于value的整数,如果是这样,倒是可以理解,不大于1899的最大整数就是1898,可为什么floor(9.99*100)返回的还是999,而不是998呢。好奇怪!

求普及下


加载中
0
ccav5
ccav5

你看似有穷的小数, 在计算机的二进制表示里却是无穷的

例如:

0.58的二进制表示基本上(52位)是: 0010100011110101110000101000111101011100001010001111
intVal后结果输出是输出57 ,从鸟哥那里学来的,希望对你有帮助

吕秀才
吕秀才
好吧,你这么一说,我突然有印象了,我好像之前看过他博客里的一篇文章!
0
自由PHP
自由PHP
用intval函数取整,floor是舍去法取整
吕秀才
吕秀才
目前我已经使用intval(),但是对floor()这个函数返回的值,有些疑问,就像上面1899和999返回的结果竟然不一样
0
pyruby
pyruby
我也一直搞不懂这个。求楼主分享
吕秀才
吕秀才
http://www.laruence.com/2013/03/26/2884.html look this!
0
zy643208
zy643208
浮点数的存贮方式决定的。
0
南湖船老大
南湖船老大
半路出家的吧,大学里第一门计算机课,叫做《计算机文化基础》,就有介绍什么BCD码,ASCII码,二进制转换的,其中就提到过小数转换的问题。
返回顶部
顶部