0

在Bean验证规范(版本号为JSR 303JSR 349)和docs中,都没有提及有关@Digits支持Double或Float类型的任何内容。它只是说,它支持以下几种类型:Bean验证:@Digits验证器是否支持Do​​uble?

  • 的BigDecimal
  • 的BigInteger
  • 的CharSequence
  • 字节,short,int和长,和他们各自的包装类型

不过,我测试它在我的实体中与Double字段相遇很多次,我发现它运行良好!

它有什么缺点我看不到?是否不愿意与Double一起使用它?

此外我发现文档明确指出@Min@Max不支持Double和Float。但是,关于@Digits

+0

'我在我的实体中对Double字段进行了多次测试,发现它工作正常!'你的意思是它不起作用(例外)或工作,但不正确? – Loc

+0

@Loc它完美的作品 – fujy

回答

1

Hibernate Validator实际上支持@Digits的任何Number类型,因此也支持Double/double。这是通过从给定数字的字符串表示中创建一个BigDecimal来完成的。由于这种行为不是由规范强制的,它可能不适用于其他Bean验证提供程序。

1

不是很明确Double是浮点数,不能很好地描述十进制数。发生舍入误差时,小数位数可能会改变。