+ -
当前位置:首页 → 问答吧 → 一个很笨的问题,但可能难倒一部人

一个很笨的问题,但可能难倒一部人

时间:2011-10-30

来源:互联网

今日在 用PHP做一个简单的计算时碰到一个怪事:
输入的 除数和被除数 都是整形,但是echo 输出的却是浮点数....怪事

我以为眼镜花了,但仔细检查了一下表达式,确实没错,换个文件重写、重启apache还是不行
最后 只能用函数把他转换后才能 得到整数的结果.

我的猜测是这样的:
输入的整数 默认被认为是浮点数,如:
2==>2.0
被 认为是浮点数有个好处:
 
精度高,且他是大类型,可以装下小类型,所以PHP默认就会用它

因为类型没有具体的说明,所以 除数和被除数 都隐式地被认为是浮点数,浮点数计算出来当然是浮点数
若 用 强制转换(int) 6/3 应该就是整数了,不用函数来转换

作者: csdaa2010   发布时间: 2011-10-30

number_format

作者: PhpNewnew   发布时间: 2011-10-30

没碰到过 6/3 能成浮点数据的情况。而且,只有在两数类型不同时,才会进行自动提升类型的转换。不能整除的情况下,得出的结果才是浮点型。

作者: ZT_King   发布时间: 2011-10-30

为什么 不能整除 时,会出现浮点数??

作者: csdaa2010   发布时间: 2011-10-30

该回复于2011-10-30 17:26:04被管理员删除

  • 对我有用[0]
  • 丢个板砖[0]
  • 引用
  • 举报
  • 管理
  • TOP
  • ZT_King
  • (VS是个贱平台)
  • 等 级:
#5楼 得分:0回复于:2011-10-30 17:21:42
-_-! 我都不知该如何回答为什么,具体实现由PHP去决定的,手册上说的很清楚
除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。 

作者: airsethh   发布时间: 2011-10-30

热门下载

更多