搜索
查看: 592|回复: 6
打印 上一主题 下一主题

小白求教

[复制链接]
跳转到指定楼层
楼主
发表于 2014-5-28 21:10:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
本帖最后由 吾尔剀西 于 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

最佳答案

查看完整内容

因为10.1不能在当前通用标准下用二进制写成有限小数 所以总是不精确的
沙发
发表于 2014-5-28 21:10:23 | 只看该作者
因为10.1不能在当前通用标准下用二进制写成有限小数
所以总是不精确的
板凳
发表于 2014-5-28 22:06:18 | 只看该作者
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. }
复制代码



地板
发表于 2014-5-29 09:44:46 | 只看该作者
  1. double a,b,c,d;
复制代码
5#
 楼主| 发表于 2014-5-29 11:29:24 | 只看该作者
thank  you   明白了呢
6#
发表于 2014-5-30 21:37:34 | 只看该作者
别用float了骚年,用double吧
7#
发表于 2014-5-31 18:35:28 | 只看该作者
用doudle a,b,c,d;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表