我有一个我想要分配给BigDecimal的字符串值.当我使用数字更新十进制值时100.23,它工作正常,但当我用类似100,23代码更新它时抛出异常.这是为什么?
哪些编程语言支持任意精度算术,你能举一个简单的例子来说明如何打印任意数量的数字吗?
是否有一个估算a消耗的内存量的指南BigDecimal?
寻找与这些指南类似的内容来估算String内存使用情况.
我的理解是正确的,使用Ruby BigDecimal类型(即使具有不同的精度和比例长度)应该准确计算还是应该预测浮点诡计?
我在Rails应用程序中的所有值都是BigDecimal类型,我看到一些错误(它们有不同的小数长度),希望它只是我的方法而不是我的对象类型.
我应该使用什么PostgreSQL列类型来存储Java BigDecimal?
我如何将a转换scala.math.BigDecimal为java.math.BigDecimal?
在Ruby 2.2.0中,为什么:
BigDecimal.new(34.13985572755337, 9)
Run Code Online (Sandbox Code Playgroud)
平等34.0但是
BigDecimal.new(34.13985572755338, 9)
Run Code Online (Sandbox Code Playgroud)
平等34.1398557?
请注意,我在64位计算机上运行它.
ruby floating-point rounding bigdecimal floating-point-precision
以下并不总是像您期望的那样:
<c:if test="${someBigDecimal == 0}">
Run Code Online (Sandbox Code Playgroud)
如果someBigDecimal的值为0,但其标度不是0,则==操作返回false.也就是说,当someBigDecimal是new BigDecimal("0")时返回true,但是当someBigDecimal是new BigDecimal("0.00")时返回false.
这是由JSP 2.0,2.1和2.2规范产生的,它们声明:
对于<,>,<=,> =:
如果A或B是BigDecimal,则将A和B强制转换为BigDecimal并使用A.compareTo(B)的返回值.
对于==,!=:
如果A或B是BigDecimal,则将A和B强制转换为BigDecimal,然后:
- 如果运算符是==,则返回A.equals(B)
- 如果操作符是!=,则返回!A.equals(B)
这意味着==和!=运算符会导致对.equals()方法的调用,该方法不仅会比较值,还会比较BigDecimals的比例.其他比较运算符导致对.compareTo()方法的调用,该方法仅比较值.
当然,以下方法可行:
<c:if test="${not ((someBigDecimal < 0) or (someBigDecimal > 0))}">
Run Code Online (Sandbox Code Playgroud)
但这是相当丑陋的,有没有更好的方法来做到这一点?
我是Java的新手并尝试使用BigDecimal(例如99999999.99)并将其转换为字符串但没有小数位和尾随数字.另外,我不想要数字中的逗号,也不需要舍入.
我试过了:
Math.Truncate(number)
Run Code Online (Sandbox Code Playgroud)
但不支持BigDecimal.
有任何想法吗?
非常感谢.
是否有一个非常大的变量类型我可以在Java中用来存储大量数字(最多四十位数)?
long最大值是9223372036854775807,这是19位数 - 不够大.
我正在尝试创建一个可以处理大数字的计算器,因为现在大多数只能保持不到10位左右的数字,而且我希望得到精确计算的数字更大的数字
编辑
谢谢你的回答.我可以BigInteger用于大整数,唯一的限制是计算机的内存(应该足够).对于小数,我将使用float^ e,如@WebDaldo建议,或者BigDecimal(类似于BigInteger),如@kocko建议的那样.
bigdecimal ×10
java ×6
decimal ×2
ruby ×2
biginteger ×1
el ×1
jsp ×1
math ×1
memory ×1
postgresql ×1
rounding ×1
scala ×1