Java中最常用的方法是验证转换long为int不会丢失任何信息?
这是我目前的实施:
public static int safeLongToInt(long l) {
int i = (int)l;
if ((long)i != l) {
throw new IllegalArgumentException(l + " cannot be cast to int without changing its value.");
}
return i;
}
Run Code Online (Sandbox Code Playgroud) 在最近的家庭作业中,我被告知使用long变量来存储结果,因为它可能是一个很大的数字.
我决定检查它对我来说真的很重要,在我的系统上(intel core i5/64-bit windows 7/gnu gcc编译器)并发现以下代码:
printf("sizeof(char) => %d\n", sizeof(char));
printf("sizeof(short) => %d\n", sizeof(short));
printf("sizeof(short int) => %d\n", sizeof(short int));
printf("sizeof(int) => %d\n", sizeof(int));
printf("sizeof(long) => %d\n", sizeof(long));
printf("sizeof(long int) => %d\n", sizeof(long int));
printf("sizeof(long long) => %d\n", sizeof(long long));
printf("sizeof(long long int) => %d\n", sizeof(long long int));
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
sizeof(char) => 1
sizeof(short) => 2
sizeof(short int) => 2
sizeof(int) => 4
sizeof(long) => 4
sizeof(long int) => 4
sizeof(long long) => 8
sizeof(long long int) => …Run Code Online (Sandbox Code Playgroud) java如何计算这个?
int number = (int) Long.parseLong("F9DFF755", 16);
Long.parseLong("F9DFF755", 16); == 4192204629 (too big to be stored by an int)
Casted to int : -102762667
Run Code Online (Sandbox Code Playgroud)
java如何强制插入int?