You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

整数与浮点数运算结果异常:为何小数位被置为0?

问题分析:温度转换结果小数位丢失原因

先看你的代码:

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);
   }
}

核心原因:整数运算的截断特性

  • tempC是int类型,9和5也都是整数字面量,所以tempC * 9 / 5全程按照整数运算规则执行。
  • 整数除法会直接舍弃小数部分,只保留整数商。比如当输入为43时,43*9=387,387/5的整数结果是77(丢掉了0.4的小数部分),再加32得到109,最后赋值给float类型时就变成了109.0,自然看不到预期的小数位。

修复方法

只需要让运算过程中触发浮点运算即可,比如修改任意一个参与运算的数值为浮点类型:

// 方法1:把9改成浮点字面量9.0f
float tempF = (tempC * 9.0f / 5) + 32;

// 方法2:先把tempC强制转换为float
float tempF = ((float)tempC * 9 / 5) + 32;

这样运算时会保留小数部分,最终就能输出109.4的正确结果。

内容的提问来源于stack exchange,提问作者Abhilash0496

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 04:04:55