我在Java从华氏温度转换到摄氏温度时遇到了问题。我刚刚开始学习Java,现在还在阅读书籍和教程。
对于我的第一个程序,我正在尝试根据本教程创建一个基本的温度计算器。
我想扩展它的功能,也包括华氏温度到摄氏温度的转换,以及基本摄氏温度到华氏温度的转换。
因此,我使用给出的示例代码完成了摄氏温度到华氏温度的部分,现在,使用相同的代码,经过大量的试验和错误后稍微修改,我正在尝试处理另一半。我让它在某种程度上工作,但它并不完全正确。
例如,当我输入 89 华氏度时,它返回 31 摄氏度,而不是预期的 32 摄氏度。我认为这是数字四舍五入方式的问题,但我不确定如何解决它。我已经做了一些阅读,我认为可以通过将舍入模式设置为“HALF_UP”来修复它,但我不确定如何做到这一点,以便它只影响这个转换,而不是另一个有效的转换。这就是我所拥有的:
int tempCel = (int) ((int)((Double.parseDouble(tempTextFieldFC.getText()))
- 32) * .55555);
tempCelLabel.setText(tempCel + " ° Celsius");
如能提供任何帮助或建议,我们将不胜感激。谢谢你的时间。
我知道OP正在学习Java,但为了其他人的利益,我建议使用JScience库,它具有许多用于开发科学应用程序的功能。其中一个强大的功能是将非SI单位转换为SI单位。
以下是从华氏度转换为摄氏度的快速示例:
将华氏值保存到字符串并将其解析为双精度。这两行与斯基特答案@Jon相同。
String fahrenheitText = tempTextFieldFC.getText();
double fahrenheit = Double.parseDouble(fahrenheitText);
现在我们建立非国际单位制和国际单位制。JScience包括基本单位,而不是公里和厘米这样的乘法单位。为了创建这些单元,SI提供了构建复合单元的方法。有关更多信息,请参见这些参考资料。关于详细的解释,我推荐阅读官方API,它也有更多的例子。
Unit<Temperature> FAHRENHEIT = NonSI.FAHRENHEIT;
Unit<Temperature> CELSIUS = SI.CELSIUS;
现在,我们通过要求源单位为目标单位提供适当的转换器并使用转换器,将其转换为华氏温度。
BigDecimal celsius = BigDecimal.valueOf(FAHRENHEIT.getConverterTo(CELSIUS).convert(fahrenheit));
对于正确的舍入,我建议使用BigDecimal setScale()方法。现在对于RoundingMode,我通常使用HALF_UP,但这取决于具体情况。对于华氏温度到摄氏温度的转换,我建议使用HALF_UP舍入。我们将设置为舍入到一个十进制数字。
celsius = celsius.setScale(1, RoundingMode.HALF_UP);
将值设置为标签。
tempCelLabel.setText(celsius + "° Celsius");
tempCel应该声明为float,这样它就可以有分数值。然后,在打印时,您应该舍入tempCel
double tempCel = (Double.parseDouble("1.45")- 32) * .55555;
System.out.println(Math.round(tempCel));
使用< code>Math.round()来执行舍入,而不是强制转换为< code>int。根据JLS第5.1.3节,铸造总是向0舍入:
否则,如果浮点数不是无穷大,则浮点值将四舍五入为整数值V,使用IEEE 754向零舍入模式向零舍进(§4.2.3)。
请注意,Math.round(Double)
仍然被声明为返回Double
,因为它可能超出了int
或long
的范围-但我希望这在您的情况下不是问题。
我还建议您将代码拆分成多个语句:
String fahrenheitText = tempTextFieldFC.getText();
double fahrenheit = Double.parseDouble(fahrenheitText);
double celsius = ((fahrenheit - 32) * 5) / 9;
int celsiusRounded = (int) Math.round(celsius);
tempCelLabel.setText(celsiusRounded + "° Celsius");
Python3 实例 以下实例演示了如何将摄氏温度转华氏温度:# -*- coding: UTF-8 -*- # Filename : test.py # author by : www.runoob.com # 用户输入摄氏温度 # 接收用户输入 celsius = float(input('输入摄氏温度: ')) # 计算华氏温度 fahrenheit = (celsius * 1.8) +
本文向大家介绍C#程序将摄氏温度转换为华氏温度,包括了C#程序将摄氏温度转换为华氏温度的使用技巧和注意事项,需要的朋友参考一下 首先,设置摄氏温度- 现在将其转换为华氏度: 您可以尝试运行以下代码将摄氏温度转换为华氏温度。 示例 输出结果
问题内容: 我正在尝试将华氏度转换为摄氏温度。现在当我使用此方法时出现错误: 然后再次尝试给定 (5.0), 那么为什么工作? 问题答案: 值“ 5”和“ 9”是整数,并且将5/9视为,这是为什么您得到错误答案的原因。当两个整数相除时,答案是自动的。有必要将“5”和“ 9”之一写为5.0和9.0 更好的做法是始终将as 和or都写为and。 由于乘法和其他运算大多是递归的,因此该语句也可以正常工作
我正试着写一个程序,把华氏温度转换成摄氏温度。用户输入华氏温度值,程序打印出摄氏温度值。用户应该输入212作为华氏温度值,程序应该计算100.0作为摄氏温度值,但是当我想要得到100.0时,我却得到0.0作为摄氏温度值 我不确定问题可能出在哪里。操作顺序是可能的吗? 将摄氏温度转换为华氏温度的公式为:< code>C = 5 / 9 (F - 32)
你好,我对Java很陌生,所以我仍然很熟悉它。现在我正在做一个课堂实验室,我已经基本弄清楚了,但是有一个部分我们需要将摄氏度转换为华氏度。我有点难过,因为我们需要将第一次转换保留为int数据类型。 在我们的实验室中,我们有测试类,根据测试类,第一个转换(int数据类型)输入-40摄氏度,运行转换方法,结果应该是-40华氏度。 这实际上是我正在编写的一个名为Conversion的用户定义类。 下面是
我试图让电报机器人响应用户的输入,并将C转换为F(反之亦然)。在最简单的层面上,这是我想要实现的目标的分解: 用户说“转换” 机器人说:“你想转换什么?” 用户说“摄氏”或“华氏” 如果“摄氏度”,机器人会响应,“请输入要转换的值。” 我尝试过一种使用布尔值的方法,每当捕获到感兴趣的命令(在本例中为“Convert”)时,它都会从“false”切换到“true”。一旦机器人做出响应,它就会切换回“