Re: [問題] 關於double 或 int 輸出問題
※ 引述《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
06/05 08:51, 1F
→
06/05 09:15, , 2F
06/05 09:15, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 6 之 8 篇):