Java中取小数的问题

import static java.lang.Math.*;

public class Hello
{

public static void main(String[] args) 
{
    double myNum = 1234.5678;
    long myNum2 = (long)Math.floor(myNum);
    double myNum3 = ((int)(myNum*100))/100;
    System.out.println(myNum3);
}

}

取2位小数,程序输出1234.0,理想输出应该是1234.56,请问什么原因?

mport static java.lang.Math.*;

public class Hello
{

public static void main(String[] args)
{
double myNum = 1234.5678;
long myNum2 = (long)Math.floor(myNum);
double myNum3 = ((int)(myNum*100))/100[color=red].0f[/color];
System.out.println(myNum3);
}
}

把 /100 换成 /100.0f 即可。
原因:
(int)(myNum*100) 是整数
整数 除100 (此100 也是整数) 所以结果还是整数 最后赋值给一个浮点数, 是将一个整数的结果转换成浮点数, 此时已晚

而整数 除100.0 (100.0f 也可以), 是整数以浮点数运算,所以先将被除数转换成浮点数,再进行除法运算;最后赋值的时候没有再经过转换

((int)myNum*100) 得到一个int 型的数字。你再拿 一个int型的数字 去除以100。 肯定也会得到一个整数,不会有小数点的。

(double)((int)myNum*100) 得到一个 double型的数字,再去除以100就OK了。

(double)((int)(myNum*100)))/100 。

[code="java"] public static void main(String[] args) {
double myNum = 1234.5678;
double myNum2 = Math.floor(myNum * 100) / 100 ;
System.out.println(myNum2);
}[/code]

输出:
1234.56

[size=x-large][color=red]这样就可以了.

double myNum = 1234.5678;
long myNum2 = (long)Math.floor(myNum);//首先这个得到的就是1234了.
double myNum3 = ((int)(myNum*100))/100; 这个得到的也是1234.0
System.out.println(myNum3); //你这里自然打出来了.[/color][/size][code="java"]package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

/**

  • ClassName:TestNetwork Function: TODO ADD FUNCTION Reason: TODO ADD REASON
  • @author 田志超
  • @version
  • @since Ver 1.1
  • @Date 2010-4-6 下午01:15:41
    */
    public class TestNetwork {
    public static void main(String[] args) {
    double myNum = 1234.5678;
    long myNum2 = (long) Math.floor(myNum*100);
    double myNum3 = (double)myNum2 / 100;
    System.out.println(myNum2);
    System.out.println(myNum3);

    }
    }[/code]