我有价值/费率。我需要它匹配到8位小数。
我不想使用正则表达式。
还有其他办法吗?
我尝试在网上找到很多,但无法弄明白。
提前致谢
样本输入65.2341234567
我只需要将它与最多8位小数的值进行比较。即64.23412345。
答案 0 :(得分:2)
import java.math.BigDecimal;
public class Compare {
public static void main(String[] args) {
BigDecimal bd1 = new BigDecimal("65.2341234567").setScale(8, BigDecimal.ROUND_FLOOR);
BigDecimal bd2 = new BigDecimal("65.234123456799").setScale(8, BigDecimal.ROUND_FLOOR);
System.out.println( "equals " + bd1.equals(bd2));
}
}
答案 1 :(得分:0)
由于机器精度不可预测,您无法始终在此精度范围内与标准数据类型进行比较。
我认为在一个范围内比较标记“丢失”精度的epsilon值会更明智。
值<值厄普西隆 和 值>值+ epsilon
让epsilon足够小,如0.002
例如。
我希望这会有所帮助。