java用不同的小数检查零

use*_*499 1 java

我需要检查从数据库(字符串)中获取的值是否为零(带有任何小数)。
以下是几个样本

0.000 - true   
0 - true  
0.000000 - true  
0.0000000000 - true  
0.0000000001 - false  
0.10 - false
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉任何简单的方法来检查上述内容吗?

Tun*_*aki 5

有不同的方法可以做到这一点。第一个问题是,为什么您String首先将这个值作为 a而不是作为 a检索BigDecimal

要检查该值是否为 0,您可以执行以下操作:

if (new BigDecimal(string).compareTo(BigDecimal.ZERO) == 0) {
    // the String is 0, whatever its scale
}
Run Code Online (Sandbox Code Playgroud)

compareTo不考虑小数的比例。然而,这会遇到内存问题,因为 String 真的很大。

另一种完全不同的方法是使用正则表达式,就像@khelwood 评论的那样。