int 与浮点数的乘法导致错误 [duplicate]

Multiplication of int with float resulting wrong [duplicate]

提问人:Abhilash0496 提问时间:6/16/2023 最后编辑:Gaurav JeswaniAbhilash0496 更新时间:6/16/2023 访问量:86

问:

import java.util.Scanner;

public class Main {
   public static void main(String[] args) {
     Scanner input = new Scanner(System.in);
     int tempC = input.nextInt();
     float tempF = (tempC * 9 / 5) + 32;
     System.out.println(tempF);
   }
}

预期输出 - 109.4

电流输出 - 109.0

为什么十进制值设置为零?

Java 浮点 精度

评论

0赞 ndc85430 6/16/2023
这回答了你的问题吗?Java 中整数的除法
1赞 Stephen C 6/16/2023
“int 与浮点数的乘法结果是错误的。”- 问题是你没有将 int 和 float 相乘。您正在乘以和除以整数!
0赞 Lutz Lehmann 6/16/2023
设计问题:如果您期望温度具有小数部分,为什么是 int?让它成为浮点数也会自动解决计算中的问题。TempC

答:

0赞 Reilas 6/16/2023 #1

"...为什么十进制值设置为零?

发生这种情况的原因是,两个 int 值的除法将产生一个整数值,而不是一个实数——floatdouble

您可以通过将浮点数文本后缀附加到这两个值的末尾来解决此问题。

这是 Java 教程中的例外。
原始数据类型(Java 教程>学习 Java™ 语言>语言基础知识)。

"...如果浮点文字以字母 F 或 f 结尾,则其类型为 float;否则。。。双倍和......字母D或d。

每个算术语句只需要一个文字后缀。因此,以下内容就足够了。

tempC * 9 / 5f

最后,您可以通过简单地将其写为 5.0 来指定双精度
虽然,您必须将 tempF 更改为双倍

double tempF = (tempC * 9 / 5.0) + 32;