即使在 C 中使用“\n%.2f”后,也无法将浮点值舍入到最接近的第二个小数 [关闭]
Posted
技术标签:
【中文标题】即使在 C 中使用“\\n%.2f”后,也无法将浮点值舍入到最接近的第二个小数 [关闭]【英文标题】:Could Not Round the float value to the nearest second decimal even after using "\n%.2f" in C [closed]即使在 C 中使用“\n%.2f”后,也无法将浮点值舍入到最接近的第二个小数 [关闭] 【发布时间】:2016-02-13 18:34:50 【问题描述】:输入以下代码后,开尔文温度输出为.2273.14995。因此 "\n%.2f" 中使用的 ".2" 已经出现在开尔文的输出值中,理想情况下应该是 273.14995。华氏转换完美地四舍五入到小数点后 2 位,但为什么不是开尔文转换?
#include <stdlib.h>
int main()
float x,y,z;
printf("Enter The Temperature In Celsius:\n ");
scanf("%f", &x);
y=(x*9/5)+32;
z=x+273.15;
printf("\nThe Temperature in Fahrenheit And Kelvin Respectively Are: \n%.2f \n\n%.2f",y,z);
Here a screenshot of the running code
【问题讨论】:
欢迎来到 Stack Overflow!你的问题看起来像你想要的吗? (我希望不会。)请看How do I format my post using Markdown or html。另外,请不要将纯文本输出添加为图像;复制文本并将其粘贴到您的代码中。 将您在此处发布的printf
与链接图像中的进行比较。提示:始终复制/粘贴问题中的实际代码,不要不要重新输入。
9/5
是一个整数除法,产生 1。我怀疑 x
、y
和 z
是华氏温度、摄氏温度和开尔文温度的好变量名称。
您使用的代码与您向我们展示的代码不同。这是一个大不不。 -1
对不起,伙计们!我的 Bad % 应该在 .2 之前而不是之后。感谢您帮助我,我是新手,再次为犯下如此愚蠢的错误感到抱歉。
【参考方案1】:
请首先考虑 Jongware 的建议,这样会很棒。
现在对于实际代码,当您使用十进制数时,您可能希望在任何地方都使用它(例如,y=(x*9/5)+32
行,最好像这样y = (x * 9.0 / 5.0) + 32.0
)。但是对于你的问题,问题是你第一次做对了%.2f
,但第二次你错过了%
,它应该在.2
之前而不是之后。 ;)
希望这会有所帮助!
【讨论】:
不客气,但请注意您的主题已被“搁置”。以上是关于即使在 C 中使用“\n%.2f”后,也无法将浮点值舍入到最接近的第二个小数 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章