标签: bigdecimal

int除以int以生成BigDecimal

是否有可能将两个整数分成两个整数并从中生成一个BigDecimal?我正在尝试优化我的代码.如果我可以减少我声明新BigDecimal的次数,它应该会显着加快我的过程.截至目前,我知道如何减少我的计算最多的是:

BigDecimal tester = new BigDecimal("103993")
       .divide(new BigDecimal("33102"), 2000, BigDecimal.ROUND_DOWN);
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能做这样的事情:

int example1 = 103993;
int example2 = 33102;

BigDecimal example3 = example1/example2;
Run Code Online (Sandbox Code Playgroud)

或类似的规定.我唯一的目标是加快执行时间.

java bigdecimal integer-division

0
推荐指数
1
解决办法
1878
查看次数

BigDecimal.ROUND_UP存在问题

为什么我的卖出价是184.84?为什么它在BigDecimal.ROUND_UP中表现得像这样.我查看了BigDecimal.ROUND_HALF_EVEN.它工作正常.但我想知道它为什么会这样.

for(int i = 0; i < 50; i++){
    double  sellrate    = 184.83;
    BigDecimal sellRate = new BigDecimal(sellrate);
    sellRate    = sellRate.setScale(2,BigDecimal.ROUND_UP);
    System.out.println("sellRate : "+sellRate); 
}
Run Code Online (Sandbox Code Playgroud)

java rounding bigdecimal

0
推荐指数
1
解决办法
165
查看次数

舍入BigDecimal的科学记数法

我想BigDecimal用科学记数法打印,以便在小数点后面有5位数字.例如:-3.12345E-51,9.12345E100

.setScale()在这种情况下不起作用,因为我事先并不知道科学记数法中的数字的指数.而且,BigDecimal似乎没有getExponent()办法.

实现这一目标的最佳方法是什么?先感谢您.

java bigdecimal

0
推荐指数
1
解决办法
1595
查看次数

当我使用BigDecimal时,为什么它会继续舍入

因此,我试图计算我的平均目标,通过划分我停止了多少次射击来计算.如何阻止它平均我的平均值

counter =目标被阻止goalCounter =进球得分

avg.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        BigDecimal avgCalc = new BigDecimal(counter/goalCounter);
        tvDisplayAvg.setText("Goal Avg: " + avgCalc);
    }
});
Run Code Online (Sandbox Code Playgroud)

所以我得到它除以得到小数,但有没有办法设置一个限制只分为千分之一的位置?

java bigdecimal

0
推荐指数
1
解决办法
132
查看次数

BigDecimal乘法返回0?

我是Java的新手,我必须将52个数字相乘,范围从0到2000.我已经尝试使用*=没有BigDecimal,但结果给了我0.0.

这是我的代码:

BigDecimal productOfStock1 = BigDecimal.ZERO;

for(int k = 1; k <= N; k++){

    for(int i = 1; i <= n; i++){
      if (i == 1){
        stockPrice[k][i] = stockZero*Math.pow(e, form + sigma*(randomno.nextGaussian()));
      }
      else {
        stockPrice[k][i] = stockPrice[k][i-1]*Math.pow(e, form + sigma*(randomno.nextGaussian()));

      }
      //sumOfStock += stockPrice[k][i];
      //productOfStock *= stockPrice[k][i];
      productOfStock1 = productOfStock1.multiply(BigDecimal.valueOf(stockPrice[k][i]));

      System.out.println(/*"Stock at [" + i + "] for N = " + N + "  and path number " + k + " is " + */stockPrice[k][i]);


  }
  } …
Run Code Online (Sandbox Code Playgroud)

java bigdecimal

0
推荐指数
1
解决办法
361
查看次数

如何格式化BigDecimal 2个分数?

我想格式化并显示BigDecimal始终为分数的数字.不应该显示其他分隔符.我怎么能实现它?以下不起作用.

NumberFormat formatter = NumberFormat.getNumberInstance(Locale.GERMANY);
formatter.setMaximumFractionDigits(2);
formatter.setMinimumIntegerDigits(2);
Sysout(formatter.format(new BigDecimal(100))); //would expect "100,00", but printout is "100"
Run Code Online (Sandbox Code Playgroud)

java currency bigdecimal

0
推荐指数
1
解决办法
749
查看次数

转换为UTF-8字符串的JavaL不同的大十进制值具有相同的值

作为与Avro玩乐的一部分,我发现了以下内容:

new String(new BigDecimal("1.28").unscaledValue().toByteArray(), Charset.forName("UTF-8"))
.equals(
new String(new BigDecimal("1.29").unscaledValue().toByteArray(), Charset.forName("UTF-8")))
-> true !!!!!!!!


DatatypeConverter.printBase64Binary(new BigDecimal("1.28").unscaledValue().toByteArray())
.equals(
DatatypeConverter.printBase64Binary(new BigDecimal("1.29").unscaledValue().toByteArray()))
-> false (as expected)
Run Code Online (Sandbox Code Playgroud)

new String(new BigDecimal("1.26").unscaledValue().toByteArray(), Charset.forName("UTF-8"))
.equals(
new String(new BigDecimal("1.27").unscaledValue().toByteArray(), Charset.forName("UTF-8")))
-> false (as expected)
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释发生了什么事吗?看起来像1.27是截止.理想情况下,我需要

new String(new BigDecimal("1.28").unscaledValue().toByteArray(), Charset.forName("UTF-8"))
Run Code Online (Sandbox Code Playgroud)

适用于每个BigDecimal值.

java utf-8 bigdecimal

0
推荐指数
1
解决办法
182
查看次数

BigDecimal添加错误的值

我有这样的BigDecimal定义:

private static final BigDecimal sd = new BigDecimal(0.7d);
Run Code Online (Sandbox Code Playgroud)

如果我打印它,我得到的价值:

0.6999999999999999555910790149937383830547332763671875
Run Code Online (Sandbox Code Playgroud)

这会导致一些错误的计算.有谁知道一种方式来获得的精确值0.7作为BigDecimal?将其更改为0.71查看正确的结果,但不应该是这样

java bigdecimal

0
推荐指数
1
解决办法
953
查看次数

BigDecimal有多大可能导致POS程序出现内存问题?

我知道BigDecimal是表达货币的最准确方式,因为将货币值视为浮点数据类型往往会导致舍入错误.但是,我也明白BigDecimal计算需要更多内存.那就是说,使用BigDecimal而不是浮点数或双倍真的是处理货币价值的程序的最佳实践?如果我制作一个程序打印餐厅每个订单的逐项收据,如果我使用BigDecimal,或者如果我使用浮点值更可能会出现舍入错误,我是否更有可能耗尽内存?

(注意:"如何处理Java BigDecimal性能?"是一个稍微类似的问题,但我更关心的是相对简单的快餐交易中风险最小的选项.)

java floating-point double currency bigdecimal

0
推荐指数
1
解决办法
52
查看次数

Java新的BigDecimal生成另一个数字

设置时,我使用的是BigDecimal数据类型

new BigDecimal(21.30);
Run Code Online (Sandbox Code Playgroud)

然后,我将其作为xml源返回,显示为

21.30000000000710522735760100185871124467578125
Run Code Online (Sandbox Code Playgroud)

另一个号码

new BigDecimal(23.11)
Run Code Online (Sandbox Code Playgroud)

回来

23.1099999994315658113818187512921995859375
Run Code Online (Sandbox Code Playgroud)

我想显示与创建时相同的小数点后的结果。

java bigdecimal

0
推荐指数
1
解决办法
66
查看次数