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条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度