I Compute, Therefore I Am
Toggle Navigation
Home
Crash Course
Who's who
Fundamentals
C Primer
Problem Solving
Tips
Discussion
有关测试考试第一题的疑问
https://onlinegdb.com/2W-xXmnl6R
老师您能帮忙看看差十分差在哪里了么?
谢谢
Prev
Next
Comments
#
legendary
2021-10-20 14:13
谢谢老师
+1
#
Moderator
2021-10-19 19:42
很奇怪的现象,做了很多实验。
测试数据为:
-459.67 F转为-273.15 C
当a是float时,如果a = -459.67,则
表达式 (a-32.0)/1.8) 的值理论上是 -273.15 ,但是采用float计算时,由于精度误差,表达式值为:
-273.15000745985241792368469759821891784667968750000000
此时,(a-32.0)/1.8 < -273.15 为真,从而被判为 invalid。导致答案错误。
如果把表达式的值保存到float变量c中,此时c的值为:
-273.14999389648437500000000000000000000000000000000000
此时,c < -273.15 为假,从而可以做正常转换。
如果采用double变量,上述表达式的值,以及把该表达式赋值给double变量c后c的值均为:
-273.1499999999999772626324556767940521240234375000000000000000000000000000000000000000000000000000000000
这样,(a-32.0)/1.8 < -273.15 和 c < -273.15 均为假,从而可以做正常的转换。
#
Moderator
2021-10-18 20:38
改用double就通过了
You have no rights to post comments
You are here:
Home
Discussion
有关测试考试第一题的疑问
Latest Commented
Goodbye and Good Luck to You All (3)
问个问题 (3)
对自己的分数有疑问的,请add comment (2)
问个题 (2)
7-60 实验11_3_结构排序 (1)
7-61实验11_7_学生信息管理系统 (3)
关于fgets函数的疑问 (2)
老师帮忙看一下这个pta 第十四次倒数第二题 (1)
关于指针的小问题 (3)
关于7-59 实验11_2_运行时错误的疑问 (2)
Discussion
问个问题
对自己的分数有疑问的,请add comment
考试座位表
问个题
7-60 实验11_3_结构排序 - 测试数据
7-60 实验11_3_结构排序
学生信息管理系统 - 测试数据
7-61实验11_7_学生信息管理系统
关于fgets函数的疑问
老师帮忙看一下这个pta 第十四次倒数第二题
关于指针的小问题
7-59 实验11_2,测试数据
关于7-59 实验11_2_运行时错误的疑问
实验10_2_动态内存分配函数_1 - 测试数据
第十一次次编程作业总结
关于PTA练习十三函数题第二题
关于PTA练习12第一题的做法
不使用校园网如何访问CS 50IDE
6-32 实验10_5 - 测试数据
6-26实验9_6_单词字符统计 - 测试数据
关于6-32 实验10_5_格式错误的疑问
第十次编程作业总结
求个数据
关于strcmp()函数和strncmp()原理和返回值的疑问
不当使用free
鞍点的测试数据
pta第十一次作业编程题第四题
选择排序的测试数据
关于第十次作业第五题的疑问
老师帮忙看一下这个pta 第十次最后一题
句子输出测试用例
有关pta第12次最后一题的疑问
字符串联接
二分查找数据
pta第十次作业第七题
老师帮忙看一下这个语句为什么不对
第十二次作业编程题第1题
问一下十二次作业函数题第3题
期中考试成绩有问题
第九次编程作业总结
实验8_2_推销员的便条 测试数据
Pta第十一次作业第二题
二维数组练习
上课时听课了吗?
第8次编程作业总结
第一次机考中违规使用禁止的语句
关于pta做过的题
期中考的答案
教与学的错位
(已解答)
Login
Username
Password
Remember Me
Log in
Comments
测试数据为:
-459.67 F转为-273.15 C
当a是float时,如果a = -459.67,则
表达式 (a-32.0)/1.8) 的值理论上是 -273.15 ,但是采用float计算时,由于精度误差,表达式值为:
-273.15000745985241792368469759821891784667968750000000
此时,(a-32.0)/1.8 < -273.15 为真,从而被判为 invalid。导致答案错误。
如果把表达式的值保存到float变量c中,此时c的值为:
-273.14999389648437500000000000000000000000000000000000
此时,c < -273.15 为假,从而可以做正常转换。
如果采用double变量,上述表达式的值,以及把该表达式赋值给double变量c后c的值均为:
-273.1499999999999772626324556767940521240234375000000000000000000000000000000000000000000000000000000000
这样,(a-32.0)/1.8 < -273.15 和 c < -273.15 均为假,从而可以做正常的转换。