Tag: bigdecimal

我怎样才能parsing一个stringBigDecimal?

我有这个string:10,692,467,440,017.120(这是一个数额)。 我想parsing它到一个BigDecimal。 问题是我已经尝试了DecimalFormat和NumbeFormat都是徒劳的。 任何帮助?

将Java Number转换为BigDecimal:最好的方法

我正在寻找将数字转换为BigDecimal的最佳方法。 这足够好吗? Number number; BigDecimal big = new BigDecimal(number.toString()); 我们可以通过toString()方法失去精度吗?

Java中BigDecimal的平方根

我们可以通过仅使用Java API而不是自定义的100行algorithm来计算Java中BigDecimal平方根吗?

BigDecimal – 使用new或valueOf

我遇到了两种方法让BigDecimal对象脱离双d。 1. new BigDecimal(d) 2. BigDecimal.valueOf(d) 这将是一个更好的方法? 会valueOf创build一个新的对象? 一般来说(不只是BigDecimal),推荐什么 – 新的或valueOf? 谢谢。

将BigDecimal格式化为最大2位十进制数字,删除小数部分的0

我有一个BigDecimal号码,我认为只有2位小数,所以我截断它使用: bd = bd.setScale(2, BigDecimal.ROUND_DOWN) 现在我想打印它作为string,但删除小数部分,如果它是0,例如: 1.00 – > 1 1.50 – > 1.5 1.99 – > 1.99 我尝试使用Formatter,formatter.format,但我总是得到2个十进制数字。 我怎样才能做到这一点? 也许工作从bd.toPlainString()string?

Java BigDecimal:舍入到最接近的整个值

我需要以下结果 100.12 -> 100.00 100.44 -> 100.00 100.50 -> 101.00 100.75 -> 101.00 .round()或.setScale() ? 我如何去做这件事?

如何处理Java BigDecimal的性能?

我写生活的货币交易应用程序,所以我不得不使用货币值(这是一个遗憾的是,Java仍然没有十进制浮点types,没有任何支持任意精度的货币计算)。 “使用BigDecimal!” – 你可能会说。 我做。 但是现在我有一些代码,性能是一个问题,BigDecimal比double基元慢1000倍以上(!)。 计算非常简单:系统所做的是多次计算a = (1/b) * c (其中a , b和c是定点值)。 但问题在于(1/b) 。 由于没有固定点,我不能使用定点算术。 BigDecimal result = a.multiply(BigDecimal.ONE.divide(b).multiply(c)不仅丑陋,而且缓慢。 我可以用什么来取代BigDecimal? 我需要至less10倍的性能提升。 我发现其他优秀的JScience库具有任意精度算术,但它甚至比BigDecimal慢。 有什么build议么?

BigDecimal乘以零

我正在用BigDecimal执行一个简单的乘法,当乘以零(在这个用例中乘以零是正确的)时,我发现了一些奇怪的行为。 基本的math告诉我乘以零的东西将等于零(参见: 零产品属性和乘法属性 ) 但是,下面的代码将始终以相同的错误失败: assertEquals(new BigDecimal(0), new BigDecimal(22.3).multiply(new BigDecimal(0))); java.lang.AssertionError: Expected :0 Actual :0E-48 这是一个BigDecimal不准确或有一些math的一个利基分支,我失踪的地方? 注意:在IntelliJ 11中运行的JDK 1.6.0_27

将秒数转换成小时分钟秒?

我一直在试图将一个秒(在一个BigDecimalvariables)的值转换为editText像“1小时22分33秒”或类似的东西的string。 我试过这个: String sequenceCaptureTime = ""; BigDecimal roundThreeCalc = new BigDecimal("0"); BigDecimal hours = new BigDecimal("0"); BigDecimal myremainder = new BigDecimal("0"); BigDecimal minutes = new BigDecimal("0"); BigDecimal seconds = new BigDecimal("0"); BigDecimal var3600 = new BigDecimal("3600"); BigDecimal var60 = new BigDecimal("60"); (我有一个roundThreeCalc这是在秒钟的价值,所以我尝试在这里转换它。) hours = (roundThreeCalc.divide(var3600)); myremainder = (roundThreeCalc.remainder(var3600)); minutes = (myremainder.divide(var60)); seconds = (myremainder.remainder(var60)); sequenceCaptureTime […]

Java BigDecimal可能的溢出错误

我正在testing一些涉及BigDecimal代码的边界条件,我注意到当BigDecimal用string"1e2147483647"初始化时,它的行为意外。 它似乎有一个介于0和1e-2147483647之间的值。 当我尝试调用intValue() ,我得到一个NegativeArraySizeException 。 我应该注意到2147483647是我系统上整数的最大值。 我做错了什么,或者这是一个BigDecimal的问题? BigDecimal test = new BigDecimal("1e2147483647"); test.compareTo(new BigDecimal(0)); //Returns 1 test.compareTo(new BigDecimal("1e-2147483647")); //Returns -1 test.intValue(); //Throws NegativeArraySizeException