Java为什么要对我的float计算进行四舍五入?

问题描述 投票:0回答:2

我是Java新手,正在学习第一步。

做作业时,我在打印带有浮点数的总计时遇到问题:

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, Francesco");
        int myFirstNumber = (10 + 5) + (2 * 10);
        int mySecondNumber = 12;
        int myThirdNumber = myFirstNumber * 2;
        int myTotal = myFirstNumber + mySecondNumber + myThirdNumber;
        float  myLastOne = myTotal/10;
        System.out.println(myTotal);
        System.out.println(myLastOne);
    }
}

Java打印的是11.0

Hello, Francesco
117
11.0

但是它应该打印11.7

Hello, Francesco
117
11.7

我知道问题出在我使用float的第8行中,甚至尝试使用double,但结果相同

java floating-point int double println
2个回答
0
投票

在Java中int devision int =除法。您必须先将int转换为浮点数。

float  myLastOne = (float)myTotal/10;

float  myLastOne = (float)myTotal/10.0;

0
投票

这是因为int-division,因为10int。您需要添加后缀f以指定它是浮点数

float myLastOne = myTotal / 10f;
System.out.println(myLastOne); // 11.7

[double也可以使用

double myLastOne = myTotal / 10.0;
System.out.println(myLastOne); // 11.7
© www.soinside.com 2019 - 2024. All rights reserved.