Re: [問題] 關於double 或 int 輸出問題

看板java作者 (大寫鎖)時間17年前 (2008/06/05 08:44), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串6/8 (看更多)
※ 引述《lion1116 (...)》之銘言: : ※ 引述《H45 (!H45)》之銘言: : : 我的推文方案根本和原PO一樣....為了表示誠意,我用其他方便的方法在這邊展示 : : public static void main(String[] args) throws Throwable { : : final double a = -0.3; : : final double b = -1.0; : : System.out.println("a = " + format(a)); : : System.out.println("b = " + format(b)); : : } : : public static String format(double x) { : : final long y = (long)x; : : if (x == y) { : : return String.valueOf(y); : : } else { : : return String.valueOf(x); : : } : : } : : --- : : 跑出來的結果 : : a = -0.3 : : b = -1 : : --- : : 重點在 format 函式,只要把 double 轉型成 long 再比較就知道有沒有非零小數了 : 我剛剛想到用餘數的方法來判斷, : String num1 = "10.5"; : String num2 = "2.5"; : double numA = Double.parseDouble(num1); : double numB = Double.parseDouble(num2); : double result = numA - numB; : if (((result * 10) % 10) == 0) { : System.out.println("Result = " + (long) result); : } else { : System.out.println("result = " + result); : } : 輸出結果:Result = 8 : 這樣輸出也可以符合原PO的要求... 我來騙些篇數好了 public static void main(String args[]) { Scanner k = new Scanner(System.in); double word = k.nextDouble(); if(Math.abs(word-(int)word)<Math.pow(10,-6)) { System.out.println((int)word); } else { System.out.println(word); } } 用來判斷兩個數字一不一樣的方法 通常double 的浮點數值 很難出現兩個數字一樣 那如果說要判斷兩個一樣的話 就要用兩個值相減看看 是否小於10^-6 如果是的話 我們就把他當做是一樣的 在寫數值的程式 應該還滿常見的 :) 不過如果原po想要在精確一點 可以在取小一點^^a -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.117.185.51

06/05 08:51, , 1F
補充 通常run function出來的double很難兩個數字一樣
06/05 08:51, 1F

06/05 09:15, , 2F
判斷那邊改成 = = 0 好像更好說 哈
06/05 09:15, 2F
文章代碼(AID): #18HpRheh (java)
討論串 (同標題文章)
文章代碼(AID): #18HpRheh (java)