国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

java.lang.NumberFormatException: Infinite or NaN原因

GeekGhc / 2500人閱讀

摘要:概念補(bǔ)充在中進(jìn)行數(shù)字類(lèi)型運(yùn)算的時(shí),之前一直有一種錯(cuò)誤的觀念,即進(jìn)行除法運(yùn)算時(shí)當(dāng)除數(shù)為時(shí)在運(yùn)行時(shí)會(huì)拋出運(yùn)行時(shí)異常。負(fù)無(wú)窮,負(fù)數(shù)除以零得到負(fù)無(wú)窮。非數(shù)字,除以時(shí)得到非數(shù)字。撥云見(jiàn)日探究清楚之后,一切都是那樣的理所應(yīng)當(dāng)。

背景

在對(duì)Double類(lèi)型的數(shù)據(jù)進(jìn)行計(jì)算操作,將結(jié)果轉(zhuǎn)化為BigDecimal時(shí)拋出了下面的異常,進(jìn)行了Debug才發(fā)現(xiàn)了問(wèn)題原因,同時(shí)也暴露出了自己在一些基礎(chǔ)知識(shí)上還有些欠缺。

Exception in thread "main" java.lang.NumberFormatException: Infinite or NaN
    at java.math.BigDecimal.(BigDecimal.java:895)
    at java.math.BigDecimal.(BigDecimal.java:872)
    at com.lingyejun.authenticator.DoubleTest.main(DoubleTest.java:13)
概念補(bǔ)充

在java中進(jìn)行數(shù)字類(lèi)型運(yùn)算的時(shí),之前一直有一種錯(cuò)誤的觀念,即進(jìn)行除法運(yùn)算時(shí)當(dāng)除數(shù)為0時(shí)在運(yùn)行時(shí)會(huì)拋出java.lang.ArithmeticException: / by zero運(yùn)行時(shí)異常。如此想當(dāng)然的以為對(duì)于浮點(diǎn)類(lèi)型如Float和Double也是如此,下面一段代碼便可以說(shuō)明問(wèn)題。

package com.lingyejun.authenticator;

public class DoubleTest {

    public static void main(String[] args) {
        Double d1 = 10 / 0D;
        Double d2 = -10 / 0D;
        Double d3 = 0.0 / 0D;
        System.out.println("d1=" + d1 + " d2=" + d2 + " d3=" + d3);
    }
}

運(yùn)算結(jié)果為“d1=Infinity d2=-Infinity d3=NaN”,什么?數(shù)字運(yùn)算居然還能算出來(lái)了字符串???打印出來(lái)的Infinity、-Infinit、NaN其實(shí)不是字符串,而是double類(lèi)型的常量,查看源碼注釋便懂了。

/**
 * A constant holding the positive infinity of type
 * {@code double}. It is equal to the value returned by
 * {@code Double.longBitsToDouble(0x7ff0000000000000L)}.
 */
public static final double POSITIVE_INFINITY = 1.0 / 0.0;

/**
 * A constant holding the negative infinity of type
 * {@code double}. It is equal to the value returned by
 * {@code Double.longBitsToDouble(0xfff0000000000000L)}.
 */
public static final double NEGATIVE_INFINITY = -1.0 / 0.0;

/**
 * A constant holding a Not-a-Number (NaN) value of type
 * {@code double}. It is equivalent to the value returned by
 * {@code Double.longBitsToDouble(0x7ff8000000000000L)}.
 */
public static final double NaN = 0.0d / 0.0;

正無(wú)窮:POSITIVE_INFINITY,正數(shù)除以零得到正無(wú)窮。

負(fù)無(wú)窮:NEGATIVE_INFINITY,負(fù)數(shù)除以零得到負(fù)無(wú)窮。

非數(shù)字:NaN,0除以0時(shí)得到非數(shù)字。 

異常原因  

通過(guò)查看BigDecimal類(lèi)中針對(duì)Double類(lèi)型數(shù)據(jù)的構(gòu)造方法,我們知道了,在構(gòu)造BigDecimal對(duì)象時(shí),構(gòu)造方法中傳入的Double類(lèi)型為無(wú)窮大或非數(shù)字時(shí)會(huì)拋出NumberFormatException異常。

public BigDecimal(double val, MathContext mc) {
        if (Double.isInfinite(val) || Double.isNaN(val))
            throw new NumberFormatException("Infinite or NaN");

撥云見(jiàn)日探究清楚之后,一切都是那樣的理所應(yīng)當(dāng)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/75493.html

相關(guān)文章

  • java.lang.NumberFormatException: Infinite or NaN原因

    摘要:概念補(bǔ)充在中進(jìn)行數(shù)字類(lèi)型運(yùn)算的時(shí),之前一直有一種錯(cuò)誤的觀念,即進(jìn)行除法運(yùn)算時(shí)當(dāng)除數(shù)為時(shí)在運(yùn)行時(shí)會(huì)拋出運(yùn)行時(shí)異常。負(fù)無(wú)窮,負(fù)數(shù)除以零得到負(fù)無(wú)窮。非數(shù)字,除以時(shí)得到非數(shù)字。撥云見(jiàn)日探究清楚之后,一切都是那樣的理所應(yīng)當(dāng)。 背景 在對(duì)Double類(lèi)型的數(shù)據(jù)進(jìn)行計(jì)算操作,將結(jié)果轉(zhuǎn)化為BigDecimal時(shí)拋出了下面的異常,進(jìn)行了Debug才發(fā)現(xiàn)了問(wèn)題原因,同時(shí)也暴露出了自己在一些基礎(chǔ)知識(shí)上還有些...

    Lavender 評(píng)論0 收藏0
  • Java 異常處理的 9 個(gè)最佳實(shí)踐

    摘要:異常處理的個(gè)最佳實(shí)踐原文地址翻譯出處在中,異常處理是個(gè)很麻煩的事情。使用描述性消息拋出異常這個(gè)最佳實(shí)踐背后的想法與前兩個(gè)類(lèi)似。當(dāng)你以錯(cuò)誤的格式提供時(shí),它將被類(lèi)的構(gòu)造函數(shù)拋出。類(lèi)提供了特殊的構(gòu)造函數(shù)方法,它接受一個(gè)作為參數(shù)。 Java 異常處理的 9 個(gè)最佳實(shí)踐 原文地址:https://dzone.com/articles/9-...翻譯出處:https://www.oschina.n...

    sihai 評(píng)論0 收藏0
  • 崩潰bug日志總結(jié)2

    摘要:出現(xiàn)錯(cuò)誤引發(fā)崩潰日志的流程分析這個(gè)錯(cuò)誤是應(yīng)用的方法總數(shù)限制造成的。 目錄介紹 1.1 java.lang.ClassNotFoundException類(lèi)找不到異常 1.2 java.util.concurrent.TimeoutException連接超時(shí)崩潰 1.3 java.lang.NumberFormatException格式轉(zhuǎn)化錯(cuò)誤 1.4 java.lang.Illegal...

    sutaking 評(píng)論0 收藏0
  • mybatis參數(shù)格式化異常:NumberFormatException: For input st

    摘要:此類(lèi)問(wèn)題,在配置中,做的比較好,所以,官方也不是很放心其注解,建議使用。錯(cuò)誤的引起,是和引起的,原因給的是字符串,卻拿一個(gè)數(shù)字比較,會(huì)做一些轉(zhuǎn)化,結(jié)果在數(shù)字格式化時(shí)發(fā)生異常。 使用mybatis注解開(kāi)發(fā)的時(shí)候,總會(huì)遇到很多問(wèn)題,但是mybatis的注解并不是那么的美好,一些問(wèn)題或者錯(cuò)誤根本不能給出準(zhǔn)確的定位,有時(shí)候,甚至?xí)o出Unknow Source的錯(cuò)誤,獲取就是一個(gè)關(guān)閉標(biāo)簽沒(méi)有關(guān)...

    aaron 評(píng)論0 收藏0
  • Android實(shí)際開(kāi)發(fā)bug大總結(jié)

    摘要:換句話說(shuō),環(huán)境或應(yīng)用程序沒(méi)有處于請(qǐng)求操作的適當(dāng)狀態(tài)。項(xiàng)目中異常分析引發(fā)崩潰日志的流程分析解決辦法常見(jiàn)的出現(xiàn)場(chǎng)景狀態(tài)異常非法線程操作。導(dǎo)致的方法出來(lái)顯示消息位于該消息之后,遲遲沒(méi)有執(zhí)行。這時(shí)候,的超時(shí)檢測(cè)結(jié)束,刪除了服務(wù)中的記錄。 目錄介紹 1.1 java.lang.UnsatisfiedLinkError找不到so庫(kù)異常 1.2 java.lang.IllegalStateExce...

    peixn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<