我有一个代表金钱的BigDecimal字段amount ,我需要以$123.00 , $15.50 , $0.33的格式在浏览器中打印它的值。 我怎样才能做到这一点? (我看到的唯一简单的解决scheme是从BigDecimal获取floatValue ,然后使用NumberFormat为分数部分创build两位数的精度)。
如何在Java中设置千位分隔符? 我有BigDecimal的string表示,我想设置千位分隔符并返回string。
我想用一些BigDecimaltypes的货币值做一些简单的总和。 BigDecimal test = new BigDecimal(0); System.out.println(test); test.add(new BigDecimal(30)); System.out.println(test); test.add(new BigDecimal(45)); System.out.println(test); 显然我不太了解BigDecimalalgorithm,看后面的输出。 Test 0 0 0 谁能帮我吗?
我在C或C ++中寻找一个好的任意精度的math库。 你能给我一些build议吗? 主要要求: 它必须处理任意大的整数(我的主要兴趣在于整数)。 万一你不知道这个字是什么意思的话,想象一下就是100000! (100000的阶乘)。 在库初始化/对象创build期间, 不应该指定精度。 精度只能受系统可用资源的限制。 它应该利用平台的全部力量,并且应该在本地处理“小”号码。 这意味着在64位平台上,计算2 ^ 33 + 2 ^ 32应该使用可用的64位CPU指令。 图书馆不应该在相同的平台上以与2 ^ 66 + 2 ^ 65相同的方式来计算。 (+),减法( – ),乘法(*),整数除法(/),余数(%),功率(**),增量(++),递减( – ),gcd() ,阶乘()和其他常用整数算术运算。 能够处理像sqrt()(平方根),log()(对数)等不会产生整数结果的函数是一个优点。 处理符号计算的能力甚至更好。 这是我到目前为止发现的: Java的BigInteger和BigDecimal类:我一直在使用这些。 我已经阅读了源代码,但我不明白下面的math。 它可能基于我从未学过的理论/algorithm。 内置的整数types或在bc / Python / Ruby / Haskell / Lisp / Erlang / OCaml / PHP /其他语言的核心库中:我曾经使用过其中的一些,但我不知道它们使用的是哪个库或者他们正在使用哪种types的实现。 我已经知道: 使用char作为十进制数字, […]
在处理现实世界的货币价值的时候,我build议使用BigDecimal而不是Double。但是我没有一个令人信服的解释,只是“通常这样做”。 你可以谈谈这个问题吗?
BigDecimal是java.math包中的一个类,对于处理大数量的特定比例有很多好处。 在这个特性中,c#中是否有相同的类或数据types?
我试图用自己的货币来创build我自己的货币类,但显然我应该使用BigDecimal 。 有人能帮我开始吗? 对于美元货币,使用BigDecimal的最好方法是什么?例如,至less使得美分的小数点后两位,等等BigDecimal的API是巨大的,我不知道使用哪种方法。 此外, BigDecimal有更好的精度,但是如果它通过一个double ? 如果我做新的BigDecimal(24.99) ,它将如何不同于使用double ? 或者我应该使用构造函数,而不是使用String ?
为什么下面的代码会引发如下所示的exception? BigDecimal a = new BigDecimal("1.6"); BigDecimal b = new BigDecimal("9.2"); a.divide(b) // results in the following exception. – java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
我明白BigDecimal是推荐用Java表示货币价值的最佳实践。 你用什么? 有更好的图书馆,而不是你喜欢使用?
我有这个小疯狂的方法,将BigDecimal值转换成漂亮和可读的string。 private String formatBigDecimal(BigDecimal bd){ DecimalFormat df = new DecimalFormat(); df.setMinimumFractionDigits(3); df.setMaximumFractionDigits(3); df.setMinimumIntegerDigits(1); df.setMaximumIntegerDigits(3); df.setGroupingSize(20); return df.format(bd); } 然而,它也产生了一个所谓的分组分隔符","这使得我所有的价值观都是这样出现的: xxx,xxx 我确实需要分隔符是点或点而不是逗号。 有没有人知道如何完成这个小小的壮举? 我已经阅读了这个 ,特别是现在这个死亡,但我找不到一个办法来完成这件事。 我以错误的方式接近了吗? 有没有更好的方法来做到这一点? 也许即使是一个解决scheme,不同的本地号码表示,因为逗号将是完美的欧洲标准。