int 与long int类型转换
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了int 与long int类型转换相关的知识,希望对你有一定的参考价值。
为什么如下的代码 int a = 100, b = 100; long int c = a * b; 不能工作?
根据 C 的内部类型转换规则, 乘法是用 int 进行的, 而其结果可能在转换为 long 型并赋给左边的 c 之前溢出或被截短。可以使用明确的类型转换, 强迫乘法以 long 型进行:
long int c = (long int)a * b;
看不懂上面的解释,有人帮忙解答解答吗?
如果a和b都是int类型的话,那么a*b可能溢出,这我可以理解。只是在什么情况下会被截短呢?
在WIN-TC中可以调试啊,怎么会不可以呢 在字节数上long型比int型大,所以int型转long是可以的,而反之有可能出错
参考技术A 就是int乘以int默认使用int做的,有可能不够长,所以强制转换。当然这种解释只能是一种常见说法,还需要结合平台,与编译器。这种东西,没有定论的。只有实践才能看到结果。如果实际产品中,显然需要杜绝默认类型转换的发生。 参考技术B java5.0提供自动装箱拆箱,Integer与int不需强转,程序会自动转换,long和Long也是一样所以,可以这么干
Long l1 = 100L;
long l2 = l1;
int i1 = (int)l2;
Integer i2 = i1;
另一种根据Integer的api有Integer.valueOf()和new Integer();可以接受int或者String类型
把Long类型转换成int或者String类型就可以了
Long l1 = 100L;
String str = l1.toString();
Integer i1 = Integer.valueOf(str);
Integer i2 = new Integer(str);
int i3 = i2; 参考技术C 不同的数据类型,它的长度是不一样的,他们之间可以发生转换,如果长的转换为短,那么会被截短,相反亦然, char转换为int 需要溢出,int转换为char截短 参考技术D 你应该确定sizeof(int)和sizeof(long),有的机子上面是一样大小的
bigdecimal 与long int 之间转换
BigDecimal与Long、int之间的互换
在实际开发过程中BigDecimal是一个经常用到的数据类型,它和int Long之间可以相互转换。
转换关系如下代码展示:
int 转换成 BigDecimal 数据类型
//int 转换成 bigDecimal类型
public static void intToBigDecimal(){
int b = 5;
BigDecimal a = new BigDecimal(b);
System.out.println(a +"的数据类型是"+a.getClass().getName());
}
Lont 转换成 BigDecimal 数据类型
//Long 类型转换成 bigDecimal
public static void longToBigDecimal(){
long b = 5;
BigDecimal a = new BigDecimal(b);
System.out.println(a +"的数据类型是"+a.getClass().getName());
}
BigDecimal 转换成 Long数据类型
//bigDecimal 转换成 Long类型
public static void bigDecimalToLong(){
BigDecimal b = new BigDecimal(12);
Long c = b.longValue();
System.out.println(c+"的数据类型是"+c.getClass().getName());
}
BigDecimal 转换成 int数据类型
//bigDecimal 转换成 int类型
public static void bigDecimalToInt(){
BigDecimal b = new BigDecimal(12);
int c = b.intValue();
}
分类: Java 基础
标签: Long, int, BigDecimal, BigDecimal和int转换, BigDecimal和Long转换
以上是关于int 与long int类型转换的主要内容,如果未能解决你的问题,请参考以下文章
Java中long(Long)与int(Integer)之间的转换(转)
java中long型如何转换为int型?还有long[ ]可以转换为int吗?