jdk 8 时区 转换_JDK 8 BigInteger精确缩小转换方法
jdk 8 時(shí)區(qū) 轉(zhuǎn)換
在博客文章“ Java中Long到Int的精確轉(zhuǎn)換 ”中,我討論了使用Math.toIntExact(Long)將Long精確地轉(zhuǎn)換為int或者如果無(wú)法縮小轉(zhuǎn)換范圍則拋出ArithmeticException 。
JDK 8引入了該方法, JDK 8還向BigInteger類引入了類似的縮小轉(zhuǎn)換方法。 這些BigInteger方法是本文的主題。
BigInteger在JDK 8中添加了四個(gè)新的“精確”方法:
- byteValueExact() –盡可能將BigInteger值準(zhǔn)確轉(zhuǎn)換為byte
- shortValueExact() –如果可能,將BigInteger值轉(zhuǎn)換為short
- intValueExact() –盡可能將BigInteger值準(zhǔn)確轉(zhuǎn)換為int
- longValueExact() –如果可能,將BigInteger值精確轉(zhuǎn)換為long
如上所述,通過(guò)JDK 8添加到BigInteger的這四個(gè)“精確”方法中的每一個(gè)都可以將BigInteger的值縮小到方法名稱中的數(shù)據(jù)類型(如果可能)。 由于所有這些類型( byte , short , int和long )的范圍都小于BigInteger ,因此在任何情況下, BigDecimal的值都可能比這四種類型中的任何一種都大。 在這種情況下,所有這四個(gè)“精確”方法都將引發(fā)ArithmeticException而不是悄悄地“將”較大的值“強(qiáng)制”為較小的表示形式(在大多數(shù)情況下,這通常是無(wú)意義的數(shù)字)。
可以在GitHub上找到使用這些方法的示例。 執(zhí)行這些示例時(shí),輸出如下所示:
===== Byte ===== 125 => 125 126 => 126 127 => 127 128 => java.lang.ArithmeticException: BigInteger out of byte range 129 => java.lang.ArithmeticException: BigInteger out of byte range ===== Short ===== 32765 => 32765 32766 => 32766 32767 => 32767 32768 => java.lang.ArithmeticException: BigInteger out of short range 32769 => java.lang.ArithmeticException: BigInteger out of short range ===== Int ===== 2147483645 => 2147483645 2147483646 => 2147483646 2147483647 => 2147483647 2147483648 => java.lang.ArithmeticException: BigInteger out of int range 2147483649 => java.lang.ArithmeticException: BigInteger out of int range ===== Long ===== 9223372036854775805 => 9223372036854775805 9223372036854775806 => 9223372036854775806 9223372036854775807 => 9223372036854775807 9223372036854775808 => java.lang.ArithmeticException: BigInteger out of long range 9223372036854775809 => java.lang.ArithmeticException: BigInteger out of long range在帶有JDK 8的BigInteger添加這些“精確”方法是一種受歡迎的方法,因?yàn)榕c數(shù)字縮小和溢出相關(guān)的錯(cuò)誤可能很細(xì)微。 擁有一種簡(jiǎn)單的方法來(lái)獲得“精確的”縮小是很好的,否則將無(wú)法通過(guò)異常使這種縮小變得明顯。
翻譯自: https://www.javacodegeeks.com/2018/06/biginteger-exact-narrowing-conversion-methods.html
jdk 8 時(shí)區(qū) 轉(zhuǎn)換
總結(jié)
以上是生活随笔為你收集整理的jdk 8 时区 转换_JDK 8 BigInteger精确缩小转换方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 织梦怎么更改内页模板(织梦专题页模板)
- 下一篇: 手机怎么打开php文件(php是什么格式