Java 双除法返回 0;数学检验现实生活

标签 java

我正在编写一个非常简单的华氏温度到摄氏温度的转换程序,它采用一个命名常量,并通过 (constant - 32) * (5/9) 的简单计算将其转换为摄氏度

无论出于什么原因,每当我运行这个程序时,它都会为 Celcius 返回 0.0。数学在现实生活中得到检验,答案是 100,但无论出于何种原因,我总是从程序中得到 0.0。代码如下:

final double BOILING_IN_F = 212; // Boiling temperature
double fToC;                     // Temperature Celsius
fToC = (BOILING_IN_F - 32) * (5/9);
output = BOILING_IN_F + " in Fahrenheit is " + fToC + " in Celsius.";
System.out.println(output);

我知道在除以整数时,任何小数都会作为一个整体返回,这就是我将变量更改为 double 的原因。即使如此,它仍然返回 0。我还尝试使用 float 作为我的数据类型,并在添加(不相关的)括号时切换计算。

最佳答案

5/9 的计算结果为 0,因为 0.5555555556 四舍五入为 0,结果是 0,这是因为您使用的是整数除法。将其中一个整数更改为 float :

5 / 9.0

如果两个数字都是整数,则使用整数除法来截断结果。操作数之一必须是非整数才能使用非整数除法。

关于Java 双除法返回 0;数学检验现实生活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408646/

相关文章:

java - 如何获取 Throwable Scala 对象中的数据?

java - 如何在纯 JPA 中为 native 查询配置默认数据库架构?

java - CWAC - 带有 ArrayAdapter 的 EndlessAdapter

java - 从java中的 future 列表中获得第一个完成 future 的方法是什么?

java - DYMO LabelWriter 450 DUO 从命令行打印 .label 文件

java - Calendar.HOUR 和 Calendar.HOUR_OF_DAY 之间的区别?

java - 连接USB跨平台硬件设备

java - XSRFTokenUtility 中的 NPE - Google 移动后端启动器

java - 在java 1.4中使用正则表达式

java - 无法在 Centos 6 上安装 jdk-7u25-linux-i586.rpm - unpack200 错误