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吗?

Java中怎么将Long类型转换成Integer或int类型?

long转int

java中long型的怎么换成int型

java里面请问下如何将long类型的数据转换成无符号的int数据