英文:
Double validation
问题
我有以下的JSON属性,其中包含数字值:
"creditLimit": "844500"
该值需要满足以下条件:
- 不得超过10位数字
- 必须是整数,不能有小数部分
以下是示例有效输入,如果用户输入这些值,我想向用户返回验证错误消息,指出无效输入:
45500.00
9876543210
示例无效输入:
540.50
98765432109
当我尝试使用以下代码时:
Double.valueOf(ent.creditLimit).intValue()
最终的值会改变,似乎会四舍五入。
我不想保留小数部分。
如何保留精确值?提前感谢。
英文:
I have the below json property which holds the numeric value
"creditLimit": "844500"
which has the following conditions:
- Should not exceed 10 digits
- Must be a whole number, should not have decimals
Below are example valid inputs for which I want to throw a validation error message back to the user, saying invalid entry:
45500.00
9876543210
Example invalid inputs:
540.50
98765432109
When I tried
Double.valueOf(ent.creditLimit).intValue()
the final value alters, looks like it round off the value.
I do not want to keep the decimals.
How to retain the exact value? Thanks in advance
答案1
得分: 2
你可以使用正则表达式进行验证,或者将其解析为 BigDecimal,然后使用 intValueExact()
:
BigDecimal bd = new BigDecimal("540.50");
try
{
bd.intValueExact();
// 数字是整数
} catch(ArithmeticException e)
{
// 数字不是整数
}
英文:
You could either use a regular expression to validate or you could parse as a BigDecimal then use intValueExact()
:
BigDecimal bd = new BigDecimal("540.50");
try
{
bd.intValueExact();
//number is a whole number
} catch(ArithmeticException e)
{
//number is not a whole number
}
答案2
得分: 1
- 确保您的类路径/运行时中有
javax.validation
的实现。 - 在您的JSON-Pojo中:
@javax.validation.constraints.Pattern(regexp = "^\\d{1,10}$")
private String creditLimit;
只允许长度为1到10的数字字符串。否则会抛出异常。
英文:
-
Ensure there is a
javax.validation
implementation in your classpath/runtime. -
In your JSON-Pojo, then:
@javax.validation.constraints.Pattern(regexp = "^\\d{1,10}$") private String creditLimit;
Allows only numerical strings of length 1 to 10. Throws exception otherwise.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论