当前位置:网站首页>数值类型转换02
数值类型转换02
2022-08-03 03:38:00 【Hyf 。】
目录
一、强制类型转换
1、基本说明
自动类型转换的逆过程,将精度大的数值转换为精度小的数值类型。使用时要加上强制转函数,但可能造成精度降低或溢出,格外注意。
2、案例实操
(1)将数据由高精度转换为低精度,就需要使用到强制转换。
(2)强制符号只针对于最近的操作数有效,往往会使用小括号提升优先级。
package chapter02
object Test_08DataTypeConversion {
def main(args: Array[String]): Unit = {
//二、强制数值类型转换
// (1)将数据由高精度转换为低精度,就需要使用到强制转换
val n1:Int = -2.9.toInt
println("n1:"+n1)
// (2)强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
val n2:Int = -2.9.toInt + -3.6.toInt
println("n2:"+n2)
val n3:Int = (-2.9 + -3.6).toInt
println(n3)
}
}
二、数值类型和String类型间转换
1、基本说明
在程序开发中,我们经常需要将基本数值类型转换成String类型。或者将String类型转成基本数值类型。
2、案例实操
(1)基本类型转String类型(语法:将基本类型的值+ " " 即可)
(2)String类型转基本数值类型(语法:sl.toInt , sl.toFloat , sl.toDouble , sl.toByten , sl.toLong , sl.toShort )
package chapter02
object Test_08DataTypeConversion {
def main(args: Array[String]): Unit = {
//三、数值类型和String类型的转换
//(1)数值转String
val n4:Int =37
val n5:String = n4 + ""
println(n5)
//(2)String转换数值
val n:Int = "423".toInt
val k:Float = "12.3".toFloat
val h:Int = "12.3".toFloat.toInt
println(n)
println(k)
println(h)
val k2:Int = (n + k +h).toInt
println(k2)
}
}
(3)注意事项
在将String类型转成基本数值类型时,要确保String类型能够转成有效的数据,比如我们可以把“123” ,转成一个整数,但是不能把“Hello”转成一个整数。
var n5:Int = "12.6" .toInt 会出现 NumberFormatException异常
三、扩展面试题
面试题总结:涉及到强制类型转换的精度缺失和数据溢出的问题
package chapter02
/**
* 128:Int类型,占据4个字节,32位
* 原码 0000 0000 0000 0000 0000 0000 1000 0000
* 补码 0000 0000 0000 0000 0000 0000 1000 0000
*
* 截取最后一个字节,Byte
* 得到补码:1000 0000
* 表示得到最大的负数是 -128
*
* 130:Int类型,占据4个字节,32位
* 原码 0000 0000 0000 0000 0000 0000 1000 0010
* 补码 0000 0000 0000 0000 0000 0000 1000 0010
*
* 截取最后一个字节,Byte
* 得到补码:1000 0010
* 对应原码:1111 1110
* 表示得到最大的负数是 -126
*/
object Test09 {
def main(args: Array[String]): Unit = {
var n:Int = 130
var b:Byte =n.toByte //范围-128——127
println(b)
}
}
边栏推荐
- ClickHouse delete table
- Nacos入门学习
- DC-3靶场搭建及渗透实战详细过程(DC靶场系列)
- How to write test cases in software testing technology (2)
- ESP8266-Arduino编程实例-LED点阵驱动(基于Max7219)
- vscode access denied to unins000.exe
- Linux-Docker-Redis安装
- Kotlin multiplication, how do I multiply smaller and smaller?
- 密码学的基础:X.690和对应的BER CER DER编码
- 中原银行实时风控体系建设实践
猜你喜欢
软件测试个人求职简历该怎么写,模板在这里
钢铁电商行业方案:钢铁工业产品全生命周期管理解决方案
Best Practices for Migration from Jincang Database from MySQL to KingbaseES (3. MySQL Database Migration Practice)
AttributeError: module ‘xxx‘ has no attribute
肖sir ——自动化讲解
找不到符号@SuperBuilder,你以为真的是Lombok的问题?
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
电子设备行业智能供应链系统:打破传统供应链壁垒,提升电子设备企业管理效能
PyTorch安装——安装PyTorch前在conda搭建虚拟环境的报错
TCP 和UDP 的详细介绍
随机推荐
【剑指offer】——股票的最大利润
利用索引机制进行绕过
【 original 】 Auto. Js the get and post case
硬件设计哪些事-PCB设计那些事
问下有用sql server flink-sql-connector-sqlserver-cdc-2
PyTorch安装——安装PyTorch前在conda搭建虚拟环境的报错
Ask next useful SQL server flink - SQL - connector - essentially a CDC - 2
使用docker容器搭建MySQL主从复制
IDEA如何创建同级工程
数据库性能系列之索引(中)
shell之条件语句(条件测试、if语句,case语句)
ROS2自学笔记:机器视觉基础
PyTorch installation - error when building a virtual environment in conda before installing PyTorch
密码学的基础:X.690和对应的BER CER DER编码
GD32学习笔记(3)NAND Flash管理
Redis-Redisson介绍和用途
log4j设置日志的时区
智能健身动作识别:PP-TinyPose打造AI虚拟健身教练!
瑞鹄转债上市价格预测
软件测试个人求职简历该怎么写,模板在这里