c语言-为什么编写c程序时,200*5*0.85等于849????

问题描述

为什么编写c程序时,200*5*0.85等于849????

不应该等于850吗???
#include
int main(void)
{
const int danjia = 5;
int shuliang = 0;
int zongjia = 0;
int zan = 0;
printf("shurushuliang:");
scanf("%d",&shuliang);
zan = shuliang * danjia;
if((zan > 30) && (zan <= 50))
zongjia = shuliang*danjia*0.9;
printf("%d",zongjia);
if(zan > 50)
{
zongjia = shuliang*danjia*0.85;
printf("%d",zongjia);
}
else
printf("%d",shuliang*danjia);
return 0;
}

解决方案

这个没办法判断,不同的编译器会使用不同的运算结合次序,以及不同的硬件指令,而进制误差是不可预期的。
最后的去整直接舍去了小数部分,而不是四舍五入。

解决方案二:

我在windows7 + vs2010上运行 是850

解决方案三:

而且,不同的编译器对这种错误的容忍度是不一样的,所以结果会不同

解决方案四:

这完全是因为浮点型计算精度的问题
0.85 在实际参与运算进,可能是 0.8499999999999,而导致结果是 849.

解决方案五:

就是因为你用的int型,而0.85是浮点型,虽然有隐性转换,但是编译器有时还是会出错,最好改成double型

解决方案六:

我这里Android-arm的G++编译器输出的结果是850
怎么做本身就是不规范的,不同的编译器实现可能会不同

解决方案七:

同一个表达式,不同的编译器有不同的结合方式,可能和人算的优先顺序不一致;另外浮点数在内部表示和显示值有一定的误差,最终取整,它取得不是四舍五入,而是直接砍掉小数部分导致。说不出问题在哪,换个编译器,或者结果也用浮点数看看。

解决方案八:

浮点数会产生精度的问题

解决方案九:

你的0.85不是double的嘛,哪里都是int。

解决方案十:

隐式类型转换, 浮点数相关内容参考 IEEE754 标准 ,IEEE754标准百度词条

时间: 2024-09-11 02:18:33

c语言-为什么编写c程序时,200*5*0.85等于849????的相关文章

xe8-XE8编写andriod程序时怎么断点调试?

问题描述 XE8编写andriod程序时怎么断点调试? XE8在编写android程序时怎么使用断点调试?就像eclipse那样. 我在真机环境下调试,编写的app能自动安装到手机,但是打的断点完全没效果. 是不是只能利用wind32平台? 解决方案 http://www.cnblogs.com/weixing/p/3210466.html

请教大神一条编写wpf程序时关于xaml的问题

问题描述 请教大神一条编写wpf程序时关于xaml的问题 为何会出现这样的错误?怎么解决? 解决方案 解决方案二: 就算是你可以不用了解他们的一个运行原理,但是最起码你得清楚命名之间的一个一一对应的关系吧 解决方案三: 应该放在 Window.Resource 节点中.可以作为整个window的资源.

c#-【强迫症】编写C#程序时定义属性遇到的问题

问题描述 [强迫症]编写C#程序时定义属性遇到的问题 在一个类中定义属性时: private string adminName; public string AdminName { get { return adminName; } set { adminName = value; } } 这算比较常规的写法吧. 可是我在阅读开源项目的例子时,见到了这样的写法 public string AdminName { get; set; } 请问,上面的这种写法正确吗?定义类的属性时,这么用对吗? 与

在用c#编写天气预报程序时的错误,高手指教啊

问题描述 在ServiceModel客户端配置部分中,找不到名称"WeatherWebServiceSoap"和协定"Weather.WeatherWebServiceSoap"的终结点元素.这可能是因为未找到应用程序的配置文件,或者是因为客户端元素中找不到与此名称匹配的终结点元素 解决方案 解决方案二:你用的中国天气网?

用python + hadoop编写分布式程序(一):原理介绍

MapReduce与HDFS简介 什么是Hadoop? &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;     Google为自己的业务需要提出了编程模型MapReduce和分布式文件系统Google File System,并发布了相关论文(可在Google Research的网站上获得: GFS . MapReduce). Doug Cutting和Mike Cafarella在开发搜索引擎Nutch时对这两

用python + hadoop编写分布式程序

什么是Hadoop? Google为自己的业务需要提出了编程模型MapReduce和分布式文件系统Google File System,并发布了相关论文(可在Google Research的网站上获得: GFS . MapReduce). Doug Cutting和Mike Cafarella在开发搜索引擎Nutch时对这两篇论文做了自己的实现,即同名的MapReduce和HDFS,合起来就是Hadoop. MapReduce的Data flow如下图,原始数据经过mapper处理,再进行par

为Windows Phone和iOS编写应用程序

有许多文档介绍将应用程序从 iOS 移植到 Windows Phone,但是在本文中,我要从为这两种平台从 头开始编写新应用程序的前提开始讲起.我不会对这两种平台户的孰优孰劣做出价值评判.相反,我对 编写应用程序报以务实的态度,并描述在编写应用程序时这两种平台的异同之处. 作为 Windows Phone 团队的成员,我对 Windows Phone 平台充满热忱,但是本文的重点不是说一种平台优 于另一种平台,而是说平台是不同的,因此需要一些不同的编程方法.尽管您可以使用 MonoTouch 系

c语言-C语言怎样编写程序运行完后,不自动结束,而是返回程序的开始的主菜单?

问题描述 C语言怎样编写程序运行完后,不自动结束,而是返回程序的开始的主菜单? 我的程序运行完一个功能后按任意键就退出了,而不是返回主菜单 代码如下,应该怎么改?(具体一点,菜鸟一个)多谢! #include #include #include #include #include #define LENTEL sizeof(tel) #define ID struct tel struct tel { char name[15]; char tele[11]; char style[15]; c

求解决-求用c语言编写此程序,越简单越好,希望大神们注释一下

问题描述 求用c语言编写此程序,越简单越好,希望大神们注释一下 /**皮球从某给定高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,--,如此反复.问皮球在第n次落地时,在空中一共经过多少距离?第n次反弹的高度是多少? 输入格式: 输入在一行中给出两个非负整数,分别是皮球的初始高度和n,均在长整型范围内. 输出格式: 在一行中顺序输出皮球第n次落地时在空中经过的距离.以及第n次反弹的高度,其间以一个空格分隔,保留一位小数.题目保证计算结果不超过双精度范围. 输入样例: 33 5 输出样例: