我有一个Java字符串,该字符串在小数点后具有美元值和美分值,并以+或-开头。我想转换为美分并将其存储在整数中(它可以具有+或-)。另外我还需要检查美分部分(小数点后)是否不超过2位并抛出错误消息(如果存在)
示例:字符串dollval =“ 12.23”输出值= 1223美分
字符串dollval =“ 12”输出值= 1200美分
字符串dollval =“ -0.09”输出值= -9美分
字符串dollval =“”-99“输出值= -99美分
字符串dollval =“-99.0”输出值= -99美分
字符串dollval =“-99.23”输出值= -9923美分
字符串dollval =“ 0.00”输出值= 0美分
字符串dollval =“ 5.2”输出val = 520美分
字符串dollval =“ 5.20”输出值= 520美分
我绝对不会使用正则表达式执行此操作,因为这会导致不必要的复杂且易于出错的代码。Java标准API提供了一个非常简单的解决方案:
BigDecimal dollars = new BigDecimal(inputString);
if(dollars.scale()>2)
{
throw new IllegalArgumentException();
}
int cents = dollars.multiply(new BigDecimal(100)).intValue();
Run Code Online (Sandbox Code Playgroud)
请注意,尽管您的上述要求不一致:
字符串dollval =“ 12”输出值= 1200美分
字符串dollval =“”-99“输出值= -99美分
我的代码假定这是一个错误,您的意思是不带小数部分的数字将被解释为正数和负数的全值。
| 归档时间: |
|
| 查看次数: |
4901 次 |
| 最近记录: |