首页 > 解决方案 > Java通货膨胀计算器问题未正确舍入

问题描述

提示:很难做出跨越几年的预算,因为价格不稳定。如果您的公司每年需要 200 支铅笔,您不能简单地将今年的价格作为两年后铅笔的成本。由于通货膨胀,成本可能会比现在更高。编写一个程序来衡量一个项目在指定年数内的预期成本。该程序询问物品的成本、从现在起购买物品的年数以及通货膨胀率。然后程序在指定期间输出项目的估计成本。让用户以百分比形式输入通货膨胀率,例如 5.6(百分比)。然后,您的程序应将百分比转换为分数,例如 0.056,并应使用循环来估计根据通货膨胀调整的价格。

代码:

    import java.util.Scanner;
    import java.text.NumberFormat;

    public class InflationCalculator {

        public static void main(String[] args) {
     
           Scanner console = new Scanner(System.in);
   
           System.out.print("Enter price of the Item:");
           double cost = console.nextDouble();
    
           System.out.print("Enter number of years in which it will be purchased:");
           double years = console.nextDouble();
    
           System.out.print("Enter percent of inflation per year:");
           double inflationRate = console.nextDouble();       
     
           inflationRate = inflationRate / 100;
   
           for(int i = 1; i <= years; i++){
           cost += cost * inflationRate;
        }
   
      System.out.println(cost);
     }   
 }

预期结果:

Enter·price·of·the·Item:200↵ Enter·number·of·years·in·which·it​​·will·be·purchased:50↵ Enter·percent·of·inflation·per·year:5↵ 2293.479957150 7338 ↵</p>

我得到了什么:

Enter·price·of·the·Item:200↵ Enter·number·of·years·in·which·it​​·will·be·purchased:50↵ Enter·percent·of·inflation·per·year:5↵ 2293.479957150 734 ↵</p>

我不确定为什么它没有正确舍入,我做错了什么???

标签: javacalculator

解决方案


问题:

double变量类型具有大约15-16 个小数点的精度。这就是您的结果被截断的原因。

解决方案:

您可以改用BigDecimalor DecimalFormat,如这些答案中所述。


推荐阅读