Richmond1979 2010-04-09 11:14
浏览 324
已采纳

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,请问什么原因?

  • 写回答

4条回答 默认 最新

  • PieStar 2010-04-09 14:41
    关注

    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 也可以), 是整数以浮点数运算,所以先将被除数转换成浮点数,再进行除法运算;最后赋值的时候没有再经过转换

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题