相关疑难解决方法(0)

如何解决Java Rounding Double问题

似乎减法正在触发某种问题,结果值是错误的.

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.

应该怎样做才能确保正确计算?

java math rounding

75
推荐指数
5
解决办法
16万
查看次数

格式化BigDecimal,没有科学记数法,具有完全精度

我想一个转换BigDecimalString印刷的目的,但打印出所有的数字没有科学记数法.例如:

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.

java string-formatting bigdecimal

29
推荐指数
2
解决办法
3万
查看次数

如何避免双重科学记数法?

这是我的简单代码

        @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而在我的情况下,这对用户没有任何意义.当然,我知道两种结果都是正确的.提前致谢.

double android

13
推荐指数
2
解决办法
2万
查看次数

没有E的Java BigDecimal

我有一个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 bigdecimal

11
推荐指数
1
解决办法
7656
查看次数

将java中的指数值转换为数字格式

我试图使用java从e​​xcel表中读取值.当我在excel的单元格中键入10个以上的字母时,它以指数形式显示,如"9.78313E + 2".但这不是我给出的真实数字.任何身体都可以帮助我解决这个问题.如何使用java语言将上述指数形式转换为原始数字.

提前致谢

java

11
推荐指数
5
解决办法
6万
查看次数

在Java中从指数形式转换为十进制

我想将指数转换为十进制.如1.234E31234.

java

5
推荐指数
3
解决办法
5万
查看次数

标签 统计

java ×5

bigdecimal ×2

android ×1

double ×1

math ×1

rounding ×1

string-formatting ×1