【Kotlin】数字类型 ( 安全转换函数 | 浮点型转整型 )

news/2025/1/23 0:46:08/

文章目录

  • 一、安全转换函数
  • 二、浮点型转整型





一、安全转换函数



在 Kotlin 中 , 将 字符串 String 类型 转为 数字类型 ,

如果 字符串 代表的数字类型要换转的 数字类型 不匹配 ,

就会出异常 ;


如 : 执行如下代码 , 就会报异常 ;

字符串内容是 0.5 ,

显然是一个 Double 类型的数字 , 强行将其转为 Int 类型 ,

就会出现 NumberFormatException 异常 ;

fun main() {val numbber: Int = "0.5".toInt()
}

执行结果 :

Exception in thread "main" java.lang.NumberFormatException: For input string: "0.5"at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)at java.lang.Integer.parseInt(Integer.java:580)at java.lang.Integer.parseInt(Integer.java:615)at HelloKt.main(Hello.kt:2)at HelloKt.main(Hello.kt)

在这里插入图片描述


Kotlin 提供了 数字类型安全转换函数 String.toIntOrNull() 函数 ,

String.toIntOrNull() 函数原型 : 注意 如果字符串不符合要求 , 就 返回空值 , 因此返回值类型是 可空类型 的 Int 值 , 类型为 Int? ;

/*** 将字符串解析为[Int]数字并返回结果* 如果字符串不是数字的有效表示,则为' null '。*/
@SinceKotlin("1.1")
public fun String.toIntOrNull(): Int? = toIntOrNull(radix = 10)

代码示例 : 字符串内容 0.5 是 Double 类型 的 , 转为 Int 显然会失败 ,

但是使用 该 安全转换函数 , 不会报异常 , 而是返回 空值 ;

fun main() {val numbber: Int? = "0.5".toIntOrNull()println(numbber)
}

在这里插入图片描述





二、浮点型转整型



toInt 强制转换函数 , 强行将 小数点 后面的小数抹掉 ;

函数原型如下 :

/*** 将[Double]值转换为[Int]。** 小数部分,如果有的话,四舍五入到零。* 如果这个' Double '值是' NaN ', [Int]则返回0。MIN_VALUE],如果它小于' Int。MIN_VALUE’,* [Int。MAX_VALUE],如果它大于' Int.MAX_VALUE '。*/
public override fun toInt(): Int

roundToInt 四舍五入函数 , 函数原型如下 :

/*** 将[Double]值舍入为最接近的整数,并将结果转换为[Int]。* 领带四舍五入到正无穷。** 特殊情况:* - ' x.roundToInt() == Int. 'MAX_VALUE ' when ' x > Int。MAX_VALUE”* - ' x.roundToInt() == Int. 'MIN_VALUE '当' x < Int。MIN_VALUE”** 当此值为NaN时,@抛出IllegalArgumentException*/
@SinceKotlin("1.2")
public actual fun Double.roundToInt(): Int = when {isNaN() -> throw IllegalArgumentException("Cannot round NaN value.")this > Int.MAX_VALUE -> Int.MAX_VALUEthis < Int.MIN_VALUE -> Int.MIN_VALUEelse -> Math.round(this).toInt()
}

格式化浮点数 :

/*** 使用此字符串作为格式字符串,并返回通过替换指定参数获得的字符串,* 使用默认区域设置。*/
@kotlin.internal.InlineOnly
public inline fun String.format(vararg args: Any?): String = java.lang.String.format(this, *args)

代码示例 :

import kotlin.math.roundToIntfun main() {// 强制转换, 抹掉小数println(1.7.toInt())// 四舍五入println(1.7.roundToInt())// 保留小数点 2 位println("%.2f".format(1.77777))
}

执行结果 :

1
2
1.78

在这里插入图片描述


http://www.ppmy.cn/news/10799.html

相关文章

Educational Codeforces Round 141 (Rated for Div. 2) A ~ C 题解

A. Make it Beautiful 题意 题目链接 给定一个长度为nnn的数组&#xff0c;将该数组重新排列使得数组内的每一个数都不等于其前面的所有数字之和。 思路 首先想到的应该是降序排列&#xff0c;因为所有数都是大于000的&#xff0c;但是因为存在重复的数&#xff0c;比如336…

Java学习(54)Java继承——final关键字的使用

Java继承——final关键字的使用1. final修饰类2. final修饰方法3. final修饰方法内的局部变量4. final修饰成员属性5. final修饰引用数据类型的实例化对象6. final是不能修饰构造方法的7. 小结1. final修饰类 (1) 在Animal类中添加final关键字&#xff1a;public final class …

主机加固对服务器防勒索病毒有哪些好处

​ 近年来&#xff0c;计算机以及互联网应用在中国得到普及和发展&#xff0c;已经深入到社会每个角落&#xff0c;政府&#xff0c;经济&#xff0c;军事&#xff0c;社会&#xff0c;文化和人们生活等各方面都越来越依赖于计算机和网络&#xff0c;电子政务&#xff0c;无纸办…

Springboot中如何优雅的写好controller层代码

前言优雅&#xff1f;看到这个词&#xff0c;我第一反应是什么是优雅&#xff1f;怎么写才算优雅&#xff1f;一千个读者有一千个哈姆雷特&#xff0c;每个人的经验、阅历不同&#xff0c;也许理解就不同。我对优雅的理解很简单&#xff0c;就是简洁有效、容易理解&#xff0c;…

ArcGIS基础实验操作100例--实验76按格网统计点要素

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验76 按格网统计点要素 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

一篇文章解决C语言操作符

我的主页&#xff1a;一只认真写代码的程序猿本文章是关于C语言操作符的讲解收录于专栏【C语言的学习】 目录 1、算术操作符 2、赋值操作符 3、关系操作符 4、条件操作符&#xff08;三目&#xff09; 5、逻辑操作符 6、单目操作符 7、移位操作符 8、位操作符 9、逗号…

12.XHTML

1.XHTML是什么 1.XHTML 是可扩展超文本标记语言。 2.XHTML 与 HTML4.01 几乎是相同的。 3.XHTML 是更严格更纯净的 HTML版本。 4.XHTML 是以 XML 应用的方式定义的 HTML。&#xff08;XML 指可扩展标记语言。&#xff09; 5.XHTML得到所有主流浏览器的支持。 2.使用XHTML的原…

网络工程师备考6章(续3)

6.20 距离矢量路协议与RIP 动态路由协议的第一个分类:距离矢量和链路状态 什么是距离矢量,例如我要从成都自驾去北京,不知道怎么走,决定路径的方式可以问别人怎么到西安,到西安后再问别人下一条路径,怎么到郑州,到郑州再问别人。一跳一跳的不停问别人,类似于距离矢量协…