守著星空守著你
2019-08-12 16:30:24
使用Float或Decimal作為會(huì)計(jì)應(yīng)用程序的美元金額?我們正在用VB.NET和SQL Server重寫我們的舊會(huì)計(jì)系統(tǒng)。我們引入了一個(gè)新的.NET / SQL程序員團(tuán)隊(duì)來(lái)進(jìn)行重寫。大多數(shù)系統(tǒng)已經(jīng)使用Floats完成了Dollar數(shù)量。我編程的遺留系統(tǒng)語(yǔ)言沒有Float,所以我可能會(huì)使用Decimal。你有什么建議?Float或Decimal數(shù)據(jù)類型應(yīng)該用于美元金額嗎??jī)烧叩膬?yōu)點(diǎn)和缺點(diǎn)有哪些?在我們的日常scrum中提到的一個(gè)騙局是,當(dāng)你計(jì)算一個(gè)返回超過(guò)兩個(gè)小數(shù)位的結(jié)果的金額時(shí),你必須要小心。聽起來(lái)你必須將金額四舍五入到小數(shù)點(diǎn)后兩位。另一個(gè)Con是所有顯示和打印金額必須有一個(gè)顯示兩個(gè)小數(shù)位的格式聲明。我注意到有幾次沒有這樣做,金額看起來(lái)不正確。(即10.2或10.2546)專家是Float只占用磁盤上的8個(gè)字節(jié),其中Decimal占用9個(gè)字節(jié)(十進(jìn)制12,2)
3 回答

墨色風(fēng)雨
TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

鴻蒙傳說(shuō)
TA貢獻(xiàn)1865條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,您應(yīng)該閱讀每個(gè)計(jì)算機(jī)科學(xué)家應(yīng)該知道的關(guān)于浮點(diǎn)運(yùn)算的內(nèi)容。那么你應(yīng)該考慮使用某種類型的定點(diǎn)/任意精度數(shù)字包(例如java BigNum,python十進(jìn)制模塊),否則你將陷入一個(gè)受傷的世界。然后弄清楚是否使用本機(jī)SQL十進(jìn)制類型就足夠了。
浮點(diǎn)/雙打存在(ed)以暴露快速x87 fp,現(xiàn)在已經(jīng)過(guò)時(shí)了。如果您關(guān)心計(jì)算的準(zhǔn)確性和/或不完全補(bǔ)償其限制,請(qǐng)不要使用它們。
添加回答
舉報(bào)
0/150
提交
取消