如何将String转换为整数而不会在Java中丢失前面的零?

时间:2017-01-08 09:04:53

标签: java

我正在尝试将前面带零的String转换为整数(或者,比方说,BigDecimal)。但转换String时会截断零。请帮助我转换而不会丢失零。

1 个答案:

答案 0 :(得分:-1)

Here Oracle解释了如何存储整数。

  
      
  • int,其值为32位带符号的二进制补码整数,其默认值为零
  •   

以及

  

Java虚拟机的整数类型的值为:

     
      
  • 对于int,从-2147483648到2147483647(-2 ^ 31到2 ^ 31 - 1),包括
  •   

显示它们只存储数字,32位只能存储在-2147483648到2147483647范围内。

所以整数不包含有关前一个零的信息。你必须单独存储它。

String s = "0002314";
int precedingZeroes = 0;    

for (char c : s.toCharArray()) {
    if(c == '+' || c == '-') {
        // Allowed, but no zero -> continue
        continue;
    }
    if(c == '0') {
        zeroes++; // We found a zero, increment counter
        continue;
    }
    // This is not a sign and no zero; we have non-zero digits now
    // (or it would be an ill-formed integer) so the other zeroes
    // are no preceding ones; -> break the loop, that's it
    break;
}

int number = Integer.parseInt(s);

所以你必须存储零的数量和数量。请注意,这仅适用于十进制数字。