謎題2 找零時刻

2022-09-11 02:42:10 字數 625 閱讀 3053

以下**表示用2元,支付1元1角的費用,返回找零結果,什麼地方有問題?

public class change
分析

浮點數在計算機以ieee754表示,有些數字不能以有限位精確表示,例如1.10

改進

轉換為整型表示(int,long)或者使用bigdecimal

public class change
注意

傳入bigdecimal的引數以字串形式表示,以浮點數形式傳入仍然會以ieee754形式顯示;

bigdecimal並沒有過載運算子(+,-,*,/)等,需要呼叫相應的api(add,subtract等);

bigdecimal比j**a原生的浮點數運算要緩慢很多,與sql中的decimal型別對應;

小結

浮點數存在精確表示問題,使用整型(int,long)或者bigdecimal表示;

引用

j**a puzzlers : traps, pitfalls, and corner cases

Java Puzzlers之二 找零時刻

同樣簡單 public class change 由於double型別的不精確性,可能你的結果為0.8999999999999999.可做以下修改 public class change 此處需注意 bigdecimal的例項物件是不可變型 如果如下使用將得不到正確結果 bigdecimal x n...

mysql建立零時表

在使用mysql中有時需要使用零時表,現在就把幾種建立零時表的方案總結一下 我喜歡先檢查一下是否有這個表,有就刪除 drop temporary table if exists temp1 這是字首,用於檢查是否存在,存在就刪除 1 只建立不寫資料進去!create temporary table ...

IOS從零時開始 序言

每一次努力都是一道坎兒,跨過去海闊天空 過不去被坎兒絆死。這句話自己勉勵的同時送給後來者,說了個題外話。具體的學習痛苦就不說了,方式無非是圖書館借書,網上各種找資料,尤其iteye上面找到很多有用的資料,絕對是低成本的學習路線。現在又因為工作的需要又轉做ios開發了,同樣悲劇的是以前根本就沒接觸過i...