分母為0一定會拋異常嗎?

2022-10-10 11:27:13 字數 1043 閱讀 8481

現象描述

最近做了乙個需求,用到了 預算 / 時間視窗數,其中預算是double型別,時間視窗數是int型別,其中時間視窗數我計算的有問題,會出現為0的情況(實際最小值應該為1),然後就出現了 乙個double型別的數除以0的情況,分母為0,是不是要報 j**a.lang.arithmeticexception: / by zero?(不蠻大家,我最初也是這樣認為的,但這個異常是針對整數的,浮點數運算引入了無限的概念)

結果沒有丟擲異常,而是返回了 infinity

復現
@test

public void test()

分析

浮點數引入無限的概念來處理這種分母為0的情況,infinity主要是為了解決除數為0的情況,上面的例子是正的infinity,其實還有負的infinity,如下例子所示

@test

public void test()

我們看下double中對infinity和-infinity的解釋

擴充套件浮點數除了有infinity,還有nan,用來表示 0 / 0

@test

public void test()

我們看下double中對nan的解釋

總結

1.浮點數在運算時,如果遇到分母為0的情況,會用乙個代表無限的infinity來表示,而遇到分子和分母都為0的情況,用nan來表示。

2.異常j**a.lang.arithmeticexception: / by zero 是針對整數的

3.並不是所有的分母為0都會拋異常

以上同樣適用於float

InnoDB一定會在索引中加上主鍵嗎

我之前看 記得是如果索引末尾就是主鍵,那麼innodb就不再新增主鍵了,如果索引末尾不是主鍵,那麼會新增主鍵,但是這跟測試結果不符 create table t a char 32 notnull primary key,b char 32 notnull key idx1 a,b key idx2...

加了索引,mysql查詢就一定會用嗎?

一 概述 日常處理mysql問題中,往往通過增加索引來提高查詢速度,但在有些情況下,執行過程中並沒有按照我們的預期結果執行,也就是說,即使欄位加了索引,但現實也沒有使用到,到底是什麼地方出了差錯,以下我們將一 竟。二 實驗表結構宣告 我們將對以下表結構進行實際案例分析 createtable stu...

會 python 的一定會爬蟲嗎,來看看

注 python 爬蟲當然要安裝 python,如何安裝參見 python 的安裝使用和基本語法 網路爬蟲就是用 模擬人類去訪問 以獲取我們想要資訊。由於 模擬的速度和效率很高,所以可以批量和動態獲取我們想要的資訊。比如搶票軟體就是一直用 訪問12306 獲取餘票資訊,一有餘票立馬使用 進行模擬購買...