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

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

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

我的猜测是这样的:
输入的整数 默认被认为是浮点数,如:
2==>2.0
被 认为是浮点数有个好处:

精度高,且他是大类型,可以装下小类型,所以PHP默认就会用它

因为类型没有具体的说明,所以 除数和被除数 都隐式地被认为是浮点数,浮点数计算出来当然是浮点数
若 用 强制转换(int) 6/3 应该就是整数了,不用函数来转换
...全文
77 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdaa2010 2011-10-30
  • 打赏
  • 举报
回复
谢谢,学得不是很扎实,努力
ZT_King 2011-10-30
  • 打赏
  • 举报
回复
-_-! 我都不知该如何回答为什么,具体实现由PHP去决定的,手册上说的很清楚
除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
csdaa2010 2011-10-30
  • 打赏
  • 举报
回复
为什么 不能整除 时,会出现浮点数??
ZT_King 2011-10-30
  • 打赏
  • 举报
回复
没碰到过 6/3 能成浮点数据的情况。而且,只有在两数类型不同时,才会进行自动提升类型的转换。不能整除的情况下,得出的结果才是浮点型。
黄袍披身 2011-10-30
  • 打赏
  • 举报
回复
number_format

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧