数据类型-转换-隐式转换和显式转换

简介: 数据类型-转换-隐式转换和显式转换

数据类型转换分为隐式转换和显式转换,根据不同的转换对象,来确定是那种类型的转换。


隐式转换:就是系统默认的、不需要加以声明就可以进行转换。


首先来说在程序语言中默认的类型,一般整数是int类型 ,浮点数(3.14),默认就是double类型。但是还有其他类型的,例如整数类型的long,浮点数的float。当相同类型之间相遇的时候,就会出现隐式转换的问题。


那么隐式转换的规则就是根据数据类型从小到大的转换:


byte→short→int→long(整数类型)


例如:


long num1 = 100;这个num1根据类型命名为long整数型,但是右侧的100在程序语言中默认为是int整数类型。然而根据隐式转换规则,int类型可以自动的转换为long整数类型。故而在程序运行的时候不会出现错误。


float→double(浮点数)


例如:


double num1 = 2.5F(F在这里代表是float类型的意思);这个同上复述。num1是double类型,但是2.5F是float类型,因为符合隐式转换的规则,所以2.5F会自动的转换为双精度类型,2.50.


显示转换:当系统默认转换不能转换的时候,而我们又需要把某一类型改为另一个类型,这个过程我们称之为显示转换也叫做强制转换。


例如:


double类型转换成int类型,如int num1 = 3.14(3.14默认为double类型)int是整数型,是不带小数点的,然而在double类型中是带小数点之后两位的,如果要想让这行代码成立,则需要强制转换,在不同的程序语言中有不同的方法,这里是用java语言来说明的,int num1 = (int)3.14;只要如此写,在程序中这行代码就可以运行。


精度丢失:


然而在这样情况下,会出现一个比较常见的问题,也是经常会遇见的错误,精度丢失,就是3.14double类型的转换到int类型之后,就只剩下了一个3,变为整数型。这不是四舍五入的套路,你就是3.99,也是会成为int类型的3,因为是精度丢失,就是没有了,所以不要想其它的。这也是强制转换的一个后续问题,当然不单单是这两个类型可以强制转换,一些常见的类型都是可以的。


当隐式转换(自动转换)不能解决问题的时候,可以尝试使用显示转换(强制转换),但是需要注意的是,精度丢失的问题是否影响结果,如果影响,请注意哦。


相关文章
|
6月前
|
C++
C/C++数据类型转换函数大全
【代码】C/C++数据类型转换函数大全。
47 0
|
6月前
|
前端开发 Java Spring
基本数据类型,特殊数据类型-和字符串自动转换
基本数据类型,特殊数据类型-和字符串自动转换
68 0
|
6月前
|
C#
C#数据类型转换
C#数据类型转换
39 0
隐式类型转换 算术转换 操作符的属性
隐式类型转换 算术转换 操作符的属性
56 0
|
存储 C语言
还不进来看吗?c趁你不注意偷偷将你的数据类型转换啦
还不进来看吗?c趁你不注意偷偷将你的数据类型转换啦
53 0
3、类型转换(强制转换、自动转换、与或非)
3、类型转换(强制转换、自动转换、与或非)
140 0
3、类型转换(强制转换、自动转换、与或非)
|
SQL 关系型数据库 MySQL
类型隐式转换导致的?No,并不是
类型隐式转换导致的?No,并不是
119 0
类型隐式转换导致的?No,并不是
C/C++: 常见的数据类型转换
常见的数据类型转换
193 0
|
安全 C#
C#(六)之数据类型转换的四种方法
转换方式有:数据类型的隐式转换,相对安全,不会导致数据丢失;显式转换强制类型转换,而且强制转换会造成数据丢失;使用Convert类进行类型转换;as运算符。
860 0
C#(六)之数据类型转换的四种方法
|
安全 编译器 C++
C++类型强制转换:隐式转换和显式转换(包含Qt智能指针类型转换)
C++类型强制转换:隐式转换和显式转换(包含Qt智能指针类型转换)
808 0