嘻嘻你好呀 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日

悬赏问题

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