我正在尝试将前面带零的String转换为整数(或者,比方说,BigDecimal
)。但转换String时会截断零。请帮助我转换而不会丢失零。
答案 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);
所以你必须存储零的数量和数量。请注意,这仅适用于十进制数字。