如何验证范围内的BigDecimal?

时间:2018-01-31 10:40:18

标签: java hibernate-validator

我想验证一个最大17个整数和2个分数的bigDecimal,我使用@Digits(integer=17, fraction=2),但这不接受1.10,例如@DecimalMin("0.00") @DecimalMax("99999999999999999.99")接受10.1234。

感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

@Digits是要走的路。

您对1.10的确切问题是什么?我不明白为什么会被报告为无效。

使用@Digits(整数= 17,分数= 2),您允许最多 2个分数,因此1.10应该没问题。如果没有,我们在某个地方有一个错误。

答案 1 :(得分:0)

您的解决方案是正确的,因此必须在其他地方找到错误。例如:

new BigDecimal(1.10)             // ERROR

应该是

new BigDecimal("1.10")

避免双精度构造函数的原因是double值没有精度(小数小数),并且是2的幂的近似值.1.10实际上是2的无限系列(负)幂。 / p>

使用第二个构造函数,BigDecimal变为 scale 2 = 2个小数位。

1.10与1.1相同,并且可能具有比例> 2,默认比例为double。