嘻嘻你好呀 2021-07-16 23:15 采纳率: 100%
浏览 45
已采纳

Java的double转int后会造成的数据丢失吗

img
运行结果

img

不知道为什么2.28 进去之后就会丢失0.01


package com.xiaoz.classTest;

import java.util.Scanner;

public class Class009 {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入美元(小数点后面最多有两位):");
        double money = sc.nextDouble();
        int rp = remainingPenny(money); // rp : remainingPenny 剩余一分钱
        // int rp = remainingPenny(2.28);
        System.out.println("剩下一分币的个数为:" + rp);
    }

    private static int remainingPenny(double money) {
        // 将美元转换成分 1美元 = 100分  
        int rp = (int) ((money) * 100);
        boolean flag = true;
        while (flag) {
            // rp : remainingPenny 剩余一分钱
            if (rp >= 100) {
                // 1美元
                rp = moneyCon(rp, 100);
                flag = judgeMoneyZero(rp);
            } else if (rp >= 25 && rp < 100) {
                // 2角5分
                rp = moneyCon(rp, 25);
                flag = judgeMoneyZero(rp);
            } else if (rp >= 10 && rp < 25) {
                // 1角币
                rp = moneyCon(rp, 10);
                flag = judgeMoneyZero(rp);
            } else if (rp >= 5 && rp < 10) {
                // 5分币
                rp = moneyCon(rp, 5);
                flag = judgeMoneyZero(rp);
            } else {
                // 剩下1分币的个数
                flag = false;
            }
        }
        return rp;
    }
    
    // 判读当前剩下的币是否为0 如果为0,结束while循环
    private static boolean judgeMoneyZero(int rp) {
        if (rp == 0) {
            return false;
        } else {
            return true;
        }
    }

    // 计算剩下 1分币
    private static int moneyCon(int rp, int rate) {
        rp -= (rp / rate) * rate;
        return rp;
    }

}

  • 写回答

2条回答 默认 最新

  • 关注

    这种数据的处理一般要把double类型乘以100,转换为整数进行处理,处理完成后再缩小100倍,加上小数点。

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

报告相同问题?

问题事件

  • 已采纳回答 7月17日
  • 创建了问题 7月16日

悬赏问题

  • ¥15 乌班图ip地址配置及远程SSH
  • ¥15 怎么让点阵屏显示静态爱心,用keiluVision5写出让点阵屏显示静态爱心的代码,越快越好
  • ¥15 PSPICE制作一个加法器
  • ¥15 javaweb项目无法正常跳转
  • ¥15 VMBox虚拟机无法访问
  • ¥15 skd显示找不到头文件
  • ¥15 机器视觉中图片中长度与真实长度的关系
  • ¥15 fastreport table 怎么只让每页的最下面和最顶部有横线
  • ¥15 java 的protected权限 ,问题在注释里
  • ¥15 这个是哪里有问题啊?