【发布时间】:2015-05-07 12:16:12
【问题描述】:
比较两个 BigDecimal 的 Java 方法是使用 compareTo() 方法,并检查结果是 -1、0 还是 1。
BigDecimal a = new BigDecimal("1.23")
BigDecimal b = new BigDecimal("3.45")
if (a.compareTo(b) > 0)) { }
我看到有些人在 grails 中使用这种格式:
if (a > b) { }
这是否正常工作? IE。它会得到正确的小数,还是转换为浮点数或类似的并进行比较?
使用 "==" 与使用 equals() 相比如何?
这样的结果是什么:
BigDecimal a = new BigDecimal("1.00")
BigDecimal b = new BigDecimal("1")
assert (a==b)
这似乎可行,但我们在 Java 中根深蒂固地认为不要做这种事情。
+= 怎么样?例如
a+=b?
这个和
一样吗a = a.add(b)
在哪里可以找到这种东西?我有两本 groovy 书,不幸的是没有提到 BigDecimal 比较或算术,只有转换/声明。
【问题讨论】:
-
答案是肯定的,在 Groovy/grails 中的 BigDecimals 上使用比较(和算术)运算符是安全的,完整列表在这里:ibm.com/developerworks/library/j-pg10255Thanks mohsenmadi 和 Nathan Hughes
标签: groovy comparison operator-keyword bigdecimal