如何在 Java 中使用 Bigdecimal 数学运算获取值



我正在尝试获取产品的税值(我作为静态值传递的税百分比(

使用大十进制,但得到下面的错误是我的代码

double  dis,amount,s;
BigDecimal taxprice;


List<WebElement> firstproductSubtotalprice = getDriver().findElements(By.xpath("//p[@class='m-order-detail-item-name']/span"));
BigDecimal firstproductSubtotalpricevalue = null;
for (WebElement webElement : firstproductSubtotalprice) {
String priceText = webElement.getText();
if (priceText != null && priceText.length() > 0) {
firstproductSubtotalpricevalue = new BigDecimal(priceText.replace('$', ' ').trim());
System.out.println("The First Product Subtotal Price is: "+ firstproductSubtotalpricevalue);
break;
}
}

List<WebElement> firstproductTaxprice = getDriver().findElements(By.xpath("//span[contains(text(), 'Tax')]/following-sibling::span[1]"));
BigDecimal firstproductTaxpriceValue = null;
for (WebElement webElement : firstproductTaxprice) {
String priceText = webElement.getText();
if (priceText != null && priceText.length() > 0) {
firstproductTaxpriceValue = new BigDecimal(priceText.replace('$', ' ').trim());
System.out.println("The First Product Tax Price is: "+ firstproductTaxpriceValue);
break;
}
}
taxprice = firstproductSubtotalpricevalue;
dis=10;
s=100-dis;
BigDecimal  c= firstproductTaxpriceValue;

BigDecimal   a = taxprice.multiply(new BigDecimal(s)); 
BigDecimal  b =  a.divide(a, 100);

System.out.println(a+"/"+b+" = "+c);

使用上面的代码,我想获取税值,并想与第一个产品税价值进行比较, 如果税额等于第一个产品税价值,那么我的测试用例即使没有失败,也通过。

请帮我获取税值

除法时不提供舍入模式。

以下是该方法的声明:

public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)

试试这个:

BigDecimal  b =  a.divide(new BigDecimal(100),2,RoundingMode.CEILING);

其中第一个参数new BigDecimal(100)是您要除以的值

第二个参数2是小数位数或小数位数

第三个参数RoundingMode.CEILING是您希望以舍入结果的方式。

你在代码末尾执行BigDecimal b = a.divide(a, 100)100在这里不是有效的输入。

使用以下方法之一:

0 (ROUND_UP)
1 (ROUND_DOWN)
2 (ROUND_CEILING)
3 (ROUND_FLOOR)
4 (ROUND_HALF_UP)
5 (ROUND_HALF_DOWN)
6 (ROUND_HALF_EVEN)
7 (ROUND_UNNECESSARY)

最新更新