Re: [問題] 關於double 或 int 輸出問題
※ 引述《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
06/05 02:36, 1F
推
06/06 19:29, , 2F
06/06 19:29, 2F
推
06/07 00:05, , 3F
06/07 00:05, 3F
→
06/07 17:43, , 4F
06/07 17:43, 4F
討論串 (同標題文章)