啊哈磊_编程从这里起步

标题: 小白求教 [打印本页]

作者: 吾尔剀西    时间: 2014-5-28 21:10
标题: 小白求教
本帖最后由 吾尔剀西 于 2014-5-28 21:11 编辑

为什么结果是1010.000061     为什么会有后面的61

360截图20140528210741662.jpg (18.93 KB, 下载次数: 0)

360截图20140528210741662.jpg

360截图20140528210912261.jpg (16.58 KB, 下载次数: 0)

360截图20140528210912261.jpg

作者: rosynirvana    时间: 2014-5-28 21:10
因为10.1不能在当前通用标准下用二进制写成有限小数
所以总是不精确的
作者: 李掌柜    时间: 2014-5-28 22:06
float是浮点型类型,如与整数乘时会有精确丢失,,
本代码解决方法是两种:
方法1
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         float a,b,c,d;
  5.         a=10.1;
  6.         b=10;
  7.         c=10;
  8.         d=a*((float)b*(float)c);/*乘法时,b  c 申明成float 浮点型*/
  9.         system("color f2");
  10.         printf("%.f",d);
  11.         return 0;
  12. }
复制代码

方法2
  1. #include<stdio.h>
  2. int main(void)
  3. {
  4.         float a,b,c,d;
  5.         a=10.1;
  6.         b=10.0;/*把b申明成浮点型*/
  7.         c=10.0;/*把c申明成浮点型*/
  8.         d=a*(b*c);
  9.         system("color f2");
  10.         printf("%.f",d);
  11.         return 0;
  12. }
复制代码




作者: 4399APPLE2    时间: 2014-5-29 09:44
  1. double a,b,c,d;
复制代码

作者: 吾尔剀西    时间: 2014-5-29 11:29
thank  you   明白了呢
作者: cad20020601    时间: 2014-5-30 21:37
别用float了骚年,用double吧
作者: hqa1101    时间: 2014-5-31 18:35
用doudle a,b,c,d;




欢迎光临 啊哈磊_编程从这里起步 (https://bbs.codeaha.com/) Powered by Discuz! X3.2