草庐IT

Bigdecimal

全部标签

java - 从Java中的Bigdecimal中提取整数和小数部分

我想从java中的bigdecimal中提取整数部分和小数部分。我为此使用了以下代码。BigDecimalbd=BigDecimal.valueOf(-1.30)StringtextBD=bd.toPlainString();System.out.println("length="+textBD.length());intradixLoc=textBD.indexOf('.');System.out.println("Fraction"+textBD.substring(0,radixLoc)+"Cents:"+textBD.substring(radixLoc+1,textBD.le

java - 提高 BigDecimal 到双转换的性能

这是BigDecimal.doubleValue()的Jdk7-b147版本publicdoubledoubleValue(){if(scale==0&&intCompact!=INFLATED)return(double)intCompact;//Somewhatinefficient,butguaranteedtowork.returnDouble.parseDouble(this.toString());}他们承认这种方式效率低下!有没有比使用这种方法更好/更快的方法? 最佳答案 没有更好的方法可以将BigDecimal转换为

java - 如何添加到 BigDecimal

我有以下函数迭代一个数组,在每个“Refund”对象上调用一个方法,返回一个包含一些值的BigDecimal,例如20.45:privateStringgetTransactionTotals(Refund[]refunds){BigDecimaltotal=newBigDecimal(0.00);/**Itteratesoveralltherefundobjectsandadds*theiramountpayablestogethertogetatotal*/for(Refundrefund:refunds){total.add(refund.getAmountPayable());

BigDecimal 类中的 Java 运行时错误 "Non-terminating decimal expansion; no exact representable decimal result"

选择“正不当集成”或“负不当集成”时出现错误错误是线程“主”java.lang.ArithmeticException中的异常:非终止十进制扩展;没有可精确表示的小数结果。atjava.math.BigDecimal.divide(BigDecimal.java:1603)atSE_Project_2.calculate(SE_Project_2.java:55)atSE_Project_2.main(SE_Project_2.java:45)代码:importjava.math.BigDecimal;importjavax.swing.JOptionPane;publicclassS

java - 如何减少以下代码的 "Cyclomatic Complexity"

我想知道如何降低以下代码的圈复杂度,这是否是我应该担心的事情。请引用方法ValuePojo.getSomething()(请不要担心变量命名,为了清楚起见,这个问题已经重写了)publicclassValuePojo{privateValueTypeEnumtype;privateBigDecimalvalue1;privateBigDecimalvalue2;privateBigDecimalvalue3;publicValuePojo(){super();}/***Thismethodreportsas"HIGHCyclomaticComplexity"**@return*/pub

java - 为什么在 Java 中两个 BigDecimal 数相除会抛出 ArithmeticException?

让我们看看下面的Java代码片段。packagedivision;importjava.math.BigDecimal;finalpublicclassMain{publicstaticvoidmain(String[]args){BigDecimala=newBigDecimal(2);BigDecimalb=newBigDecimal(3);System.out.println(a.multiply(b));System.out.println(a.add(b));System.out.println(b.subtract(a));System.out.println(a.divi

java - 除以 BigDecimals 导致 ArithmeticException

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:ArithmeticExceptionthrownduringBigDecimal.divide这会导致ArithmeticException:http://ideone.com/RXeZw提供比例和舍入模式会给我错误的结果。这个例子应该输出50.03%。如何正确舍入?为了便于引用,这是代码:BigDecimalpriceDiff=BigDecimal.ONE.subtract(newBigDecimal(9.99).divide(newBigDecimal(19.99))).multiply(newBigD

Java:如何使用函数式编程正确操作 BigDecimal 数组?

那么,如何使用函数式编程获得此代码的结果:publicstaticfinalListnumbers=Arrays.asList(newBigDecimal("15"),newBigDecimal("10"),newBigDecimal("17"),newBigDecimal("30"),newBigDecimal("18"),newBigDecimal("23"),newBigDecimal("5"),newBigDecimal("12"));BigDecimaltotalOfReducedNumbers=BigDecimal.ZERO;for(BigDecimalnumber:num

java - 如何在 JUnit assertEquals 中强制 BigDecimal 舍入?

每次我运行assertEquals时,我预期的BigDecimal都会四舍五入,这会导致它失败。我如何确保它不会变圆或是否有其他方法?@Testpublicvoidtest(){BigDecimalamount=BigDecimal.valueOf(1000);BigDecimalinterestRate=BigDecimal.valueOf(10);BigDecimalyears=BigDecimal.valueOf(10);InterestCalculatoric=newInterestCalculate(amount,interestRate,years);BigDecimale

java - 在 BigDecimal 中修剪两个以上的尾随零

什么是为BigDecimal修剪两个以上尾随零的好方法所以1.2200会打印1.22而1.0000会打印1.00编辑以及返回1.222200作为1.2222和1.220000001为1.220000001等。所以忽略前两个零我想修剪任何传入的0而不是修剪非零值一种方法可能是相乘,然后应用内置修剪尾随零,然后除以100。极端情况可能会有问题,但我的问题中的值是基于货币的,并且永远不会超过Java设置的界限(否则这意味着我的软件正在处理以巨额美元计的出价)丑陋的解决方案如下System.out.println(((newBigDecimal("1.230223000").multiply(