lua數(shù)學(xué)計(jì)算的inf和nan

? ? ? ?我們雖然已經(jīng)脫離了野蠻和不開化,但是,我們依然保持著對(duì)未知世界的敬畏。當(dāng)人們還處在洪荒遠(yuǎn)古時(shí)期,我們對(duì)未知的事物,總是以鬼神來解釋。到了開化之后,我們對(duì)科學(xué)的敬畏無時(shí)不刻的不在提醒著我們對(duì)未知的恐懼。

? ? ? ?今天,我來講述一個(gè)lua關(guān)于對(duì)數(shù)學(xué)世界的恐懼之一,極大值和極小值。[inf] [nan]在某次偶然的log調(diào)試?yán)?,我注意到控制臺(tái)輸出了這么兩個(gè)以前沒有見過的東西。雖然我的程序代碼里只有非常簡單的數(shù)學(xué)計(jì)算,還是出現(xiàn)這樣高端(未知)的東西。對(duì)數(shù)學(xué)的敬畏由此展開......

? ? ? ?這個(gè)知識(shí)點(diǎn)很簡單,也許是初中或者小學(xué)時(shí)代的數(shù)學(xué)里有提及過;分子/分母的關(guān)系,簡單的除法計(jì)算方式,問題也從這兒開始延展...

以下是lua腳本:

????????local result = numCounts / numNeed

????????print("result:"..result)

? ? ? ?想這樣簡單代碼里蘊(yùn)含的數(shù)學(xué)問題,一個(gè)簡單的除法計(jì)算會(huì)導(dǎo)致一些讓人震驚的bug,numNeed 是一個(gè)極小的數(shù)字,也學(xué)就是0。這個(gè)時(shí)候觸發(fā)了這個(gè)很有意思的bug 得出的結(jié)果是 [inf] 出了這個(gè)bug之后,我求助于網(wǎng)友得出的結(jié)果是【一個(gè)極大的數(shù)值】可能已經(jīng)超出了我們所有人預(yù)期。本著格物致知的原則,我確認(rèn)了一下 inf的意思是infimum,另外一種更為坑爹的情況得出的結(jié)果是[nan],事后某位同學(xué)給我解答了一下,這個(gè)代表極小值...,事后我確認(rèn)了一下,這個(gè)的實(shí)際意思因該是[no a number的縮寫]。

? ? ? ?討論回到數(shù)學(xué)課堂,這樣的代碼看似沒有任何問題,但是,在數(shù)學(xué)的角度來說,除法計(jì)算里分母是絕對(duì)不能等于0的。從嚴(yán)謹(jǐn)?shù)某绦蚪嵌葋硭伎歼@個(gè)問題,分子、分母是都不可以為0的,如果過小也會(huì)導(dǎo)致bug。這似乎跟程序一點(diǎn)兒關(guān)系都沒有,但是也會(huì)導(dǎo)致程序的bug。延伸的說,簡單的除法會(huì)導(dǎo)致這樣的問題,如果是稍微復(fù)雜一點(diǎn)兒的計(jì)算公式,分子分母不能為0的情況必須加適當(dāng)?shù)臄r截條件去過濾(同樣接受九年義務(wù)教育的你也許不會(huì)犯這樣的數(shù)學(xué)錯(cuò)誤,不過配置表的作者就很難說了)。

? ? ? ?我們所從事的工作是一個(gè)團(tuán)隊(duì)(幾個(gè)人一起協(xié)同工作)不排除隊(duì)友可能出這樣的數(shù)學(xué)上的失誤,雖然看起來代碼并沒有問題,并不代表不會(huì)出這樣的bug。

? ? ? ?因?yàn)槟衬?某月-某日-某時(shí),在這個(gè)數(shù)學(xué)問題上出過這樣的bug,然后引起了一場(chǎng)預(yù)計(jì)未知的恐懼和對(duì)數(shù)學(xué)的敬畏,基于團(tuán)隊(duì)協(xié)作的互補(bǔ)思考。

? ? ? 在每次數(shù)學(xué)計(jì)算之前,基于數(shù)學(xué)角度的思考,加上這些非0判斷,這些參與計(jì)算的值是不可以為0的,可以使用assert斷言來過濾和判斷,或者根據(jù)需求給出默認(rèn)值。翻譯到實(shí)處就是說debug版本的提供assert斷言給出明確的錯(cuò)誤提示給測(cè)試同學(xué)作為測(cè)試依據(jù),release版根據(jù)需求過濾此類錯(cuò)誤留下log或者根據(jù)實(shí)際需求給出默認(rèn)值(我是很抵觸默認(rèn)值這玩意兒的,不建議給出默認(rèn)值,除非是必要的)。由于代碼比較簡單,所以,我就不給出具體實(shí)現(xiàn)的代碼了。

數(shù)學(xué)參考:https://baike.baidu.com/item/INF/10856600?fr=aladdin

數(shù)學(xué)參考:https://baike.baidu.com/item/nan/7455322?fr=aladdin

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line),也就是一...
    悟名先生閱讀 4,569評(píng)論 0 13
  • TF API數(shù)學(xué)計(jì)算tf...... :math(1)剛開始先給一個(gè)運(yùn)行實(shí)例。tf是基于圖(Graph)的計(jì)算系統(tǒng)...
    MachineLP閱讀 4,066評(píng)論 0 1
  • 本章內(nèi)容 語法 數(shù)據(jù)類型 流控制語句 理解函數(shù) 3.1 語法 3.1.1 區(qū)分大小寫 區(qū)分大小寫 3.1.2 標(biāo)識(shí)...
    悶油瓶小張閱讀 798評(píng)論 0 0
  • 什么是 JavaScript 語言? JavaScript 是一種輕量級(jí)的腳本語言。所謂“腳本語言”(script...
    oWSQo閱讀 1,918評(píng)論 0 1
  • 今天剽悍晨讀給我們分享的書叫《小狗錢錢的人生整理術(shù)》,這本書的副標(biāo)題是“30日職場(chǎng)、生活、財(cái)富的贏家養(yǎng)成法則”。分...
    青墨QINGMO閱讀 387評(píng)論 6 10

友情鏈接更多精彩內(nèi)容