gpt4 book ai didi

java - 在 Java 中编译时可能存在有损转换

转载 作者:行者123 更新时间:2023-12-02 11:11:28 25 4
gpt4 key购买 nike

import java.util.*;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter price: $");
float price = keyboard.nextFloat();
System.out.println("Early payment (Y/N): ");
String char1 = keyboard.nextLine();

float amount = price;

if (char1.equals('Y'))
{
amount = price * 0.9;
}

System.out.printf("Amount due: $%0.2f\n", amount);


}
}

编译时,无论我传递 int 还是 float,它都会出现可能有损转换的错误。这里有什么问题?

最佳答案

在 Java 中,默认情况下每个十进制数都被视为 double。您将 float 乘以 double,结果是 double:

float price = 10.7f;
float result = price * 0.9; //this does not work

在这里,我们有两个选择。第一个是将 0.9 转换为 float,将 f 放在数字前面:

float result = price * 0.9f;

第二个选项是将结果保存为double:

double result = price * 0.9;

请仅在进行简单测试时使用double/floatHere我们对 Double 和 BigDecimal 之间的区别有一个很好的解释:

关于java - 在 Java 中编译时可能存在有损转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50595568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com