作者capslook1218 (大写锁)
看板java
标题Re: [问题] 关於double 或 int 输出问题
时间Thu Jun 5 08:44:26 2008
※ 引述《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
1F:→ capslook1218:补充 通常run function出来的double很难两个数字一样 06/05 08:51
2F:→ capslook1218:判断那边改成 = = 0 好像更好说 哈 06/05 09:15