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

看板java作者 (...)時間17年前 (2008/06/04 20:51), 編輯推噓3(301)
留言4則, 4人參與, 最新討論串3/8 (看更多)
※ 引述《H45 (!H45)》之銘言: : ※ 引述《polomoss (小澤)》之銘言: : : 今天我需要使用者輸入兩個數來做運算 : : 假設可能為 : : 5 6 : : 1.2 2.7 : : 2.5 2.5 : : 然後就是做一些運算,(加法 & 減法) : : 所以輸出就會是 : : 11 -1 : : 3.7 -1.5 : : 5 0 --------------(1) : : 因為會有小數,所以我從一開始的運算 : : 就是打輸入的String 用 Double.parseDouble 轉成 double 格式 : : 所以我的輸出就會變成 : : 11.0 -1.0 : : 3.7 -1.5 : : 5.0 0.0 ---------------(2) : : 想問有沒有大大有好的方法,讓輸出是 (1) 而不是下面帶有.0 : : 是不是有什麼格式化輸出的函式可以用???? : 我的推文方案根本和原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的要求... -- 每個人都有一部時光機器, 回憶可以帶人回到過去,而夢想可以讓人前往未來。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.148.113

06/05 02:36, , 1F
基本上,小數不一定只有一位...如果是6.05就破功了
06/05 02:36, 1F

06/06 19:29, , 2F
這東西我練計算機也有碰到 我是用%1有沒有餘數判斷
06/06 19:29, 2F

06/07 00:05, , 3F
一樓沒把回文的程式看懂 XD
06/07 00:05, 3F

06/07 17:43, , 4F
對喔...還有%1這個可以用@@ 那這樣就不用*10了
06/07 17:43, 4F
文章代碼(AID): #18He_I7C (java)
討論串 (同標題文章)
文章代碼(AID): #18He_I7C (java)