如何验证范围内的BigDecimal?

问题描述 投票:0回答:2

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

感谢帮助!

java hibernate-validator
2个回答
0
投票

@Digits是要走的路。

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

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


0
投票

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

new BigDecimal(1.10)             // ERROR

应该

new BigDecimal("1.10")

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

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

1.10与1.1相同,并且可能具有> 2的标度,默认标准为double。

© www.soinside.com 2019 - 2024. All rights reserved.