#4013: 遇到瓶頸...搞不定尾數小數0...OTZ


welkin001 (無盡的蒼穹(持續更新中~水題集中帖))

學校 : 國立臺中技術學院
編號 : 12344
來源 : [111.252.125.191]
最後登入時間 :
2012-10-27 14:59:49
d018. 字串讀取練習 | From: [114.46.153.197] | 發表日期 : 2010-07-20 14:36

與正確輸出不相符(line:4)
您的答案為: -100567.0
正確答案為: -100567

一直卡在尾數0呀...不知道要怎麼改...QQ

希望有人能指點我一下...卸卸

import java.util.*;
import java.math.BigDecimal;
public class Basic_d018{
    public static void main(String args[]){
        Scanner sn = new Scanner(System.in);
        while(sn.hasNext()){
            BigDecimal sum = new BigDecimal(0);
            Scanner tmp = new Scanner(sn.nextLine()).useDelimiter(" ");
            while(tmp.hasNext()){
                String[] tmpStr = tmp.next().split("[:]");   
                if(Integer.parseInt(tmpStr[0]) % 2 == 0)
                    sum = sum.subtract(new BigDecimal(tmpStr[1]));
                else
                    sum =  sum.add(new BigDecimal(tmpStr[1]));
            }
            System.out.println(sum.doubleValue());
        }
    }
}
 

 
#4015: Re:遇到瓶頸...搞不定尾數小數0...OTZ


liouzhou_101 (王启圣)

學校 : 广西柳州高级中学
編號 : 3714
來源 : [126.108.190.144]
最後登入時間 :
2023-07-21 17:40:51
d018. 字串讀取練習 | From: [222.84.103.126] | 發表日期 : 2010-07-21 11:28

與正確輸出不相符(line:4)
您的答案為: -100567.0
正確答案為: -100567

一直卡在尾數0呀...不知道要怎麼改...QQ

希望有人能指點我一下...卸卸

import java.util.*;
import java.math.BigDecimal;
public class Basic_d018{
    public static void main(String args[]){
        Scanner sn = new Scanner(System.in);
        while(sn.hasNext()){
            BigDecimal sum = new BigDecimal(0);
            Scanner tmp = new Scanner(sn.nextLine()).useDelimiter(" ");
            while(tmp.hasNext()){
                String[] tmpStr = tmp.next().split("[:]");   
                if(Integer.parseInt(tmpStr[0]) % 2 == 0)
                    sum = sum.subtract(new BigDecimal(tmpStr[1]));
                else
                    sum =  sum.add(new BigDecimal(tmpStr[1]));
            }
            System.out.println(sum.doubleValue());
        }
    }
}
 


这种错误在非C/C++语言一定会出现的!——像我们这样非C/C++的人们就麻烦了...

所以要另外在输出上做一定的判断,来将小数点后多余的0去掉。

在C/C++中只要 printf("%g\n",n); 就可以了...

 //好无语...

希望以后出题者要注意这方面的问题。

 
#4017: Re:遇到瓶頸...搞不定尾數小數0...OTZ


welkin001 (無盡的蒼穹(持續更新中~水題集中帖))

學校 : 國立臺中技術學院
編號 : 12344
來源 : [111.252.125.191]
最後登入時間 :
2012-10-27 14:59:49
d018. 字串讀取練習 | From: [114.38.80.97] | 發表日期 : 2010-07-21 21:40

與正確輸出不相符(line:4)
您的答案為: -100567.0
正確答案為: -100567

一直卡在尾數0呀...不知道要怎麼改...QQ

希望有人能指點我一下...卸卸

import java.util.*;
import java.math.BigDecimal;
public class Basic_d018{
    public static void main(String args[]){
        Scanner sn = new Scanner(System.in);
        while(sn.hasNext()){
            BigDecimal sum = new BigDecimal(0);
            Scanner tmp = new Scanner(sn.nextLine()).useDelimiter(" ");
            while(tmp.hasNext()){
                String[] tmpStr = tmp.next().split("[:]");   
                if(Integer.parseInt(tmpStr[0]) % 2 == 0)
                    sum = sum.subtract(new BigDecimal(tmpStr[1]));
                else
                    sum =  sum.add(new BigDecimal(tmpStr[1]));
            }
            System.out.println(sum.doubleValue());
        }
    }
}
 


这种错误在非C/C++语言一定会出现的!——像我们这样非C/C++的人们就麻烦了...

所以要另外在输出上做一定的判断,来将小数点后多余的0去掉。

在C/C++中只要 printf("%g\n",n); 就可以了...

 //好无语...

希望以后出题者要注意这方面的问题。

之後在寫後,已經寫出來了...不過判斷方式很鳥就是了...

我做了以下這樣的處理:

            if(sum.doubleValue() % 1 == 0)
                System.out.println(sum.intValue());
            else
                System.out.println(sum.doubleValue());

不知道有沒有用java寫的有更好的寫法?

 

 

 
ZeroJudge Forum