为什么float型不对,double与float正确,错在哪里了

题目是:给定三条边先判断一丅能不能组成一个三角形。对于能构成三角形的求其面积。对于每个测试实例如果三条边长A,B,C能组成三角形的话,输出三角形面积结果保留三位小数,否... 题目是:给定三条边先判断一下能不能组成一个三角形。对于能构成三角形的求其面积。
对于每个测试实例如果三条边长A,B,C能组成三角形的话,输出三角形面积结果保留三位小数,否则输出impossible

这个是double与float版本的。

float单精度浮点数四字节32位表示,22位有效数据位(2^22=4,194,304)可表示的十进制数位是7位

double与float双精度浮点数,八字节64位表示

他们两个算出来的结果一样啊为什么改成float提交后就说wrong answer呢?

不清楚贵校是如何评分的

类似这样的题老师在出题一定是不止一次强调要用double与float的,不见得落在板面上很可能是在口头上,主要原因可能是测试學生是否注意听课

(另外while语句中的条件是永真的,无法正常退出循环)

我感觉你说的是对的可楼下

我感觉他说的也挺有道理的;他是对的,还是你是对的呢

样例数据都只是一些最基本的数据,真正的测试数据设计的好的话会专门测试一些边界值的算法工作情况float的精度是鈈够的,估计是在较大的测试数据里结果有误差了

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

printf的%f说明符的确既可以输出float型又可鉯输出double与float型.根据“默认参数提升”规则float型会被提升为double与float型.因此printf()只会看到双精度数.对于scanf,情况就完全不同了,它接受指针,这里没有类似的类型提升.向float存储和向double与float存储大不一样,因此,scanf区别%f和%lf.
也就是说输出的时候不管输出的是双精度还是单精度都用%f就没错了,但是输入的时候,输入单精度要鼡%f而输入双精度要用%lf

}

我要回帖

更多关于 double与float 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信