bigdecimal相关内容
我正在使用在java应用程序中实现脚本引擎的开源项目(axil),并且在尝试利用BigDecimal的舍入时遇到了一个主要的障碍。似乎BigDecimal正在将我的输入转换为科学记数法,然后将我传入的精度应用于数字的SN表示系数,而不是其非SN表示。例如: new BigDecimal(“ - 232454.5324”)。round(new MathContext(2,RoundingMod
..
我想将一个bigdecimal值除以一个整数。我已经舍入了bigdecimal值(如果它是133.333,那么舍入值是133)。下面是我的代码片段。 v1 = v1.setScale(0,RoundingMode.HALF_UP); int temp = BigDecimal.valueOf(v1.longValue())。divide(constant1); 常量的
..
我尝试将两个 BigDecimal 值乘以乘以方法,如下所示, BigDecimal dur = BigDecimal.valueOf(60 / 1.1); BigDecimal bal = BigDecimal.valueOf(1.1); BigDecimal ans = dur.multiply(bal); System.out.println(“Ans:”+ an
..
为BigDecimal修剪两个以上尾随零的好方法 所以1.2200会打印1.22而1.0000会打印1.00 编辑以及返回1.222200作为 1.2222和1.220000001作为1.220000001等。所以忽略前两个零我想修剪任何传入的0并且不修剪非零值 一种方法可能是乘法,然后应用内置的修剪尾随零,然后除以100.角落情况可能有问题,但值在我的问题是基于货币,永远不会
..
我有一个BigDecimal变量 BigDecimal x = new BigDecimal(“5521.0000000001”); 公式: x = x.add(new BigDecimal(“ - 1”) .multiply(x.divideToIntegralValue(new BigDecimal(“1.0”)))); 我想删除整数部
..
为什么下面的代码抛出了java数字格式异常? BigDecimal d = new BigDecimal(“10934,375” ); 解决方案 问题是 BigDecimal 需要十进制数字格式,其中小数点在小数点之后。而不是十进制逗号,所以这个特定情况的正确格式是: BigDecimal d = new BigDecimal(“10934.375”);
..
我试图用Java渲染一个名为“Lorenz Attractor”的分形图。因为 double 不起作用(值超出范围),所以我决定选择BigDecimals。经过38次迭代后,我的代码崩溃,它让我得到一个ArithmeticException(Underflow)。下面是一些代码: BigDecimal xnew = this.x.add(this.hBig.multiply(BigDeci
..
我想减去2 double 值,我尝试了以下代码。 double val1 = 2.0; double val2 = 1.10; System.out.println(val1 - val2); 我的输出为, 0.8999999999999999 获取输出 0.9 我尝试使用 BigDecimal ,如下所示, BigD
..
Java中 BigDecimal 值小数点后的最大位数是多少? 解决方案 这几乎是无限的。如果将scale设置为整数的最大值,则可以在小数点后存储大约20亿个数字,但如果尝试执行此操作,可能会耗尽内存。如果您需要存储这么多的数字以确定限制是一个问题,那么您可能需要重新考虑程序的设计。 参见 BigDecimal文档: 不可变,任意精度的带符号十进制数。 BigDecimal由任
..
使用以下代码: BigDecimal x = new BigDecimal(“34.5678”); BigDecimal a = x.movePointRight(3); BigDecimal b = x.scaleByPowerOfTen(3); BigDecimal c = x.movePointRight(-3); BigDecimal d = x.scaleByPo
..
我可以在Java中使用一个非常大的变量类型来存储大量数字(最多大约四十个数字)吗? long 的最大值是9223372036854775807,这是19位数 - 不够大。 我正在尝试创建一个可以处理大数字的计算器,因为现在大多数只能容纳10位数左右,我想要用数字进行精确计算更大幅度 编辑 感谢您的回答。对于大整数,我可以使用 BigInteger ,唯一的限制是计算机的内存
..
任何人都可以推荐一种高效方式来确定 BigDecimal 是否是数学意义上的整数值? 目前我有以下代码: private boolean isIntegerValue(BigDecimal bd){ boolean ret; try { bd.toBigIntegerExact(); ret = true; } catch(ArithmeticException e
..
我知道之前经常会问过这个问题的变体(参见此处和此处例如),但不 完全重复。 我想检查是否字符串是一个数字,如果是这样,我想将它存储为 double 。有几种方法可以做到这一点,但所有这些方法似乎都不适合我的目的。 一种解决方案是使用 Double.parseDouble(s )或类似的新的BigDecimal 。但是,如果存在逗号,则这些解决方案不起作用(因此“1,234”会导致异常)
..
我需要像这样比较三个Bigdecimal值。 例如: if(Min
..
目前我在显示格式化小数时遇到问题。在我的本地机器上,我有一个十进制值:0.002100000000存储在数据库中。 @FacesConverter(“bigDecimal4DigitsConverter”) 公共类BigDecimal
..
我试图使用scale = 3和HALF_UP舍入模式来舍入0.14049并希望看到舍入值= 0.141但是得到0.140。 根据我的理解最后一个十进制数字9应该向上舍入4到5,当使用比例3时,它应该向上舍入0到1,我应该看到0.141。 这是一个BigDecimal setScale方法中的错误或我对Rounding的期望是错误的。如何获得类似于0.141而不是0.140的舍入值?
..
考虑以下代码: bdval = new BigDecimal(strval,new MathContext(attrib.getPrecision())); bdval.setScale(attrib.getScale(),RoundingMode.HALF_UP); PMD 非常正确地说: 对Immutable的无用操作 那么为
..
我想用逗号和2个小数点格式化BigDecimal数字。 ,例如 金额为:5.0001并格式化为:5.00 金额为:999999999.999999,格式为:999,999,999.99 金额为:1000.4999,格式为:1,000.49 金额为:9999.089,格式为:9,999.08 金额为:0.19999,格式为:0.19 金额为:123456.99999999,格式为:
..
BigDecimal的等于()方法也会比较比例,所以 new BigDecimal(“0.2”)。equals(new BigDecimal(“0.20”))// false 这是有争议的为什么呢表现得像那样。 现在,假设我有一个 Set ,如何检查如果0.2在该集合中,则与比例无关? 设置 set
..
这个问题:如何生成随机BigInteger 描述了一种实现与BigIntegers的Random.nextInt(int n)相同语义的方法。 我想对BigDecimal和Random.nextDouble做同样的事情( )。 上述问题的一个答案建议创建一个随机的BigInteger,然后用随机比例从中创建一个BigDouble。一个非常快速的实验表明这是一个非常糟糕的主意:)
..