为了账号安全,请及时绑定邮箱和手机立即绑定

BigDecimal setScale方法语法不起作用

BigDecimal setScale方法语法不起作用

烙印99 2021-05-03 13:13:49
这段代码在我提到setScale()的那一行上给了我一个错误;我说“需要舍入”给我一个错误。我正在尝试制作一个将使用cp和sp的应用程序,然后根据利润/亏损找到利润/亏损百分比。有人可以用BigDecimal语句帮助我吗?```javaimport java.math.BigDecimal;import java.math.RoundingMode;import java.util.Scanner;abstract class functions{    abstract void cpSP();}public class Percentage{    static Scanner sc = new Scanner(System.in);    public void cpSP()    {        System.out.println("Enter the Cost Price:");        double CP = sc.nextDouble();        System.out.println("Enter the Selling Price:");        double SP = sc.nextDouble();        if (CP > SP)        {            System.out.println("As the Cost Price is greater than the Selling Price, there will be LOSS.");            System.out.println("Loss = CP - SP");            double loss = CP - SP;            System.out.println("Loss = " + loss);            System.out.println("Now,");            System.out.println("Loss percentage = Loss/CP x 100");            System.out.println("");            double lossPercentage = (loss/CP)*100;            String lPString = Double.toString(lossPercentage);            BigDecimal bd = new BigDecimal(lPString);            bd.setScale(2);            System.out.println("Loss percentage = " + bd + "%" );        }        else if (SP > CP)         {            System.out.println("As the Cost Price is less than the Selling Price, there will be PROFIT.");            System.out.println("Profit = SP - CP");            double profit = SP - CP;            System.out.println("Profit = " + profit);            System.out.println("Now,");            System.out.println("Profit percentage = Profit/CP x 100");            double profitPercentage = (profit / CP)*100;            String pPString = Double.toString(profitPercentage);            BigDecimal bd = new BigDecimal(pPString).setScale(2, RoundingMode.UNNECESSARY);            System.out.println("Proft percentage = " + bd + "%" );        }        else        {            System.out.println("No profit, no loss.");        }    }
查看完整描述

1 回答

?
侃侃尔雅

TA贡献1801条经验 获得超16个赞

setScale方法的javadoc中已明确提及

如果{@code roundingMode == ROUND_UNNECESSARY}和指定的缩放操作需要四舍五入,则@throws ArithmeticException。

示例:这将引发以上异常

new BigDecimal("1200.1234").setScale(2, BigDecimal.ROUND_UNNECESSARY)

因为当您将其比例缩小为2时,您需要指定舍入的方式-向上舍入(1200.13)或向下舍入(1200.12)

如果仅需要两位小数,请选择一种舍入模式(您可以接受的任何一种)


查看完整回答
反对 回复 2021-05-12
  • 1 回答
  • 0 关注
  • 412 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信