A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 千年的泪 中级黑马   /  2014-6-6 19:00  /  1029 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 千年的泪 于 2014-6-6 20:18 编辑

请问下面的程序输出为什么会有个小尾巴?
  1. #import <Foundation/Foundation.h>
  2. int main()
  3. {
  4. float f = 123.79;
  5. NSLog(@"%f", f);
  6. return 0;
  7. }
复制代码


输出是:123.790009
为什么最后面多出一个9来?

3 个回复

倒序浏览
浮点数会有精度损失 控制下就好了  %.3f
回复 使用道具 举报
这位同学,这里实际显示的值是由具体你所使用的计算机系统决定的。
float在不同的计算机系统中所能存储的精度是不同的。你的系统float类型
应该只能保证6位数字的准确性,所以超过六位数字后面的数字系统不能保证其准确性。
比如:计算1/3得到的结果应该是0.33333333~无线循环,但是计算机内存是有限的,
float的存储空间也是有限的。这是计算机系统的不确定性造成的,总有计算机系统无法
表示的内容。
就好比浴室再大,水也会留到外面,流到外面的水在浴室里是无法控制的。
回复 使用道具 举报 1 0
天天来黑马论坛,收获多多啊{:2_40:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马