关于Java字符串美元到美分的转换

Ara*_*rav 1 java string

我有一个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美分

Mic*_*rdt 5

我绝对不会使用正则表达式执行此操作,因为这会导致不必要的复杂且易于出错的代码。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美分

我的代码假定这是一个错误,您的意思是不带小数部分的数字将被解释为正数和负数的全值。