作者lion1116 (...)
站内java
标题Re: [问题] 关於double 或 int 输出问题
时间Wed Jun 4 20:51:24 2008
※ 引述《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
1F:推 polomoss:基本上,小数不一定只有一位...如果是6.05就破功了 06/05 02:36
2F:推 Sucker:这东西我练计算机也有碰到 我是用%1有没有余数判断 06/06 19:29
3F:推 TonyQ:一楼没把回文的程式看懂 XD 06/07 00:05
4F:→ lion1116:对喔...还有%1这个可以用@@ 那这样就不用*10了 06/07 17:43