当前位置:  开发笔记 > 编程语言 > 正文

与前导零的整数

如何解决《与前导零的整数》经验,为你挑选了3个好方法。

当我写System.out.println(0123);,我得到83不过System.out.println((int)0123F);打印123.

它为什么这样工作?



1> luiscubal..:
八进制(基数为8)

0123表示八进制 123,即1*8*8 + 2*8 + 3,等于83.由于某种原因,八进制浮点数不可用.

创建0123表示整数83.创建0123F表示浮动123.当转换回整数时,它仍然是123.

如果你不是指八进制,就不要使用前导0.毕竟,它们并不完全有用(并且当他们看到09F时,了解八进制数的程序员会感到困惑).


如果你想要一个十六进制数,它需要从0x开始,而不是0.所以0123F是一个浮点数,0x123F是十六进制数.
@misty`0010`相当于`010`.第一个前导零表示八进制,其余的表现为您所期望的 - 它们被忽略.
@karlihnos很酷,但是很明显,条形码并不代表数字,而是代表数字的字符串。就像电话号码一样。0是0,而前导0不会更改数字,而它确实会更改电话号码或条形码代表的内容

2> toolkit..:

因为以0字母开头的整数文字被视为八进制数.

参见JLS的 3.10.1节



3> ryeguy..:

试试这个:

public static String leftPad(int n, int padding) {
    return String.format("%0" + padding + "d", n);
}
leftPad(5, 3); // return "005"
leftPad(15, 5); // return "00015"
leftPad(224, 3); // return "224"
leftPad(0, 4); // return "0000"

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有