似乎减法正在触发某种问题,结果值是错误的.
double tempCommission = targetPremium.doubleValue()*rate.doubleValue()/100d;
Run Code Online (Sandbox Code Playgroud)
78.75 = 787.5*10.0/100d
double netToCompany = targetPremium.doubleValue() - tempCommission;
Run Code Online (Sandbox Code Playgroud)
708.75 = 787.5 - 78.75
double dCommission = request.getPremium().doubleValue() - netToCompany;
Run Code Online (Sandbox Code Playgroud)
877.8499999999999 = 1586.6 - 708.75
由此产生的预期值为877.85.
应该怎样做才能确保正确计算?
我想一个转换BigDecimal到String印刷的目的,但打印出所有的数字没有科学记数法.例如:
BigDecimal d = BigDecimal.valueOf(12334535345456700.12345634534534578901);
String out = d.toString(); // Or perform any formatting that needs to be done
System.out.println(out);
Run Code Online (Sandbox Code Playgroud)
我想要12334535345456700.12345634534534578901打印.现在我得到:1.23345353454567E+16.
这是我的简单代码
@Override
public void onClick(View v) {
try {
double price = Double.parseDouble(ePrice.getText().toString());
double percent = Double.parseDouble(ePercent.getText().toString());
double priceValue = price * percent/100.0f;
double percentValue = price - priceValue;
moneyToGet.setText(String.valueOf(priceValue));
moneyToPay.setText(String.valueOf(percentValue));
moneyToGet.setText("" + priceValue);
moneyToPay.setText("" + percentValue);
// catch
} catch (NumberFormatException ex) {
// write a message to users
moneyToGet.setText("");
}
}
});
Run Code Online (Sandbox Code Playgroud)
这是百分比计算器的简单代码.
我想要的是避免我的计算器中的科学记数法因为我不想向用户解释什么是科学记数法.
例如,如果我想计算100,000,000并减少50%,它应该给我50,000,000,这给了我5.0E7而在我的情况下,这对用户没有任何意义.当然,我知道两种结果都是正确的.提前致谢.
我有一个BigDecimal变量
BigDecimal x = new BigDecimal("5521.0000000001");
Run Code Online (Sandbox Code Playgroud)
式:
x = x.add(new BigDecimal("-1")
.multiply(x.divideToIntegralValue(new BigDecimal("1.0"))));
Run Code Online (Sandbox Code Playgroud)
我想删除整数部分,以获取值x = ("0.0000000001"),但我的新值是1E-10而不是0.0000000001.
我试图使用java从excel表中读取值.当我在excel的单元格中键入10个以上的字母时,它以指数形式显示,如"9.78313E + 2".但这不是我给出的真实数字.任何身体都可以帮助我解决这个问题.如何使用java语言将上述指数形式转换为原始数字.
提前致谢