Java double.MAX_VALUE?

标签 java double

在我的任务中,我必须为一家燃气公司创建一个燃气表系统,以允许员工创建新的客户帐户并修改名称和单位成本等数据,以及从他们的帐户中提取(存入)资金。

我已经创建了我的构造函数,甚至添加了一个重载方法,尽管我目前在启动我命名为 deposit() 的方法时遇到了问题,这应该会花钱来自用户帐户,而 recordUnits() 等其他方法允许员工导入燃气表读数,了解客户使用了多少单位,并更新该客户帐户的余额,这基本上是客户欠公司的。

当尝试启动存款方法时仅使用预设信息测试程序时,我得到了这个

Account.deposit(Double.MAX_VALUE);

我不太清楚这意味着什么,而且似乎无法找到克服它的方法!

测试数据和代码如下:

public class TestGasAccount 

{
    public static void main (String [] args)
    {
        GasAccount Account = new GasAccount (223,"Havana","TQ",1000);
        
        Account.getAccNo();
        Account.getName();
        Account.getAddress();
        Account.getUnits();
        Account.getBalance();
        Account.recordUnits(1000);
        Account.getUnits();
        Account.getBalance();
        Account.deposit(Double.MAX_VALUE);
    }
}

public class GasAccount 
{
    private int intAccNo;
    private String strName;
    private String strAddress; 
    private double dblBalance;
    private double dblUnits;
    protected double dblUnitCost = 0.02; 
    
     public GasAccount(int intNewAccNo,String strNewName,String strNewAddress,double dblNewUnits)
     {
         intAccNo = intNewAccNo;
         strName = strNewName;
         strAddress = strNewAddress;
         dblUnits = dblNewUnits;
         dblBalance = dblNewUnits * dblUnitCost;
     }
     
     public GasAccount (int intNewAccNo, String strNewName, String strNewAddress)
     {
         intAccNo = intNewAccNo;
         strName = strNewName;
         strAddress = strNewAddress;
     }
     
     public double deposit (Double dblDepositAmount)
     {
        dblBalance = dblBalance - dblDepositAmount; 
        return dblBalance;
     }
     
     public String recordUnits (double dblUnitsUsed)
     {
         double dblTempBalance;
         
         dblTempBalance = dblUnitsUsed * dblUnitCost;
         dblBalance = dblBalance + dblTempBalance;
         dblUnits = dblUnits + dblUnitsUsed;
         
         return "Transaction Successful"; 
     }
     
     public int getAccNo ()
     {
         System.out.println(intAccNo);
         return intAccNo;
     }
     
     public String getName()
     {
         System.out.println(strName);
         return strName; 
     }
     
      public String getAddress()
     {
         System.out.println(strAddress);
         return strName; 
     }
     
     public double getBalance()
     {
         System.out.println("£"+dblBalance);
         return dblBalance; 
     }
     
     public double getUnitCost()
     {
        
         return dblUnitCost;
     }
     
     public double getUnits ()
     {
         System.out.println(dblUnits);
         return dblUnits;
     }
     
     public void updateUnitCost (double dblNewUnitCost)
     {
         dblUnitCost = dblNewUnitCost;
     }
}

最佳答案

Double.MAX_VALUE是 double 可以表示的最大值(大约 1.7*10^308)。

如果您尝试减去数据类型的最大可能值,这应该会导致一些计算问题。

即使在处理金钱时,您也不应该使用浮点值,尤其是四舍五入时这可能会导致问题(那时您的系统中的钱要么多,要么少)。

关于Java double.MAX_VALUE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16146219/

相关文章:

java - 如何同时响应两个不同的 KeyEvents?

c++ - 用于 float 阈值操作的 SIMD

java - 如何在JAVA中快速读取文件中的double

Python 套接字接收 double 据

swift - 检查 double 值是否为整数 - Swift

java - 为什么这个同步方法给我一个错误?

java - 在 JDK8 存储库中进行更改

java - 在 Java 中验证直径 URI 的方法?

java - Jspinner 显示文件中的图像

c - scanf 正在收集错误的输入