首页 > 解决方案 > 自定义货币系统乘法

问题描述

我还在学习,所以放轻松。

我有以下货币系统:

3 种不同的硬币,我们称它们为 Rhodonite(红色)、Daranen(金色)和 Delis(灰色)。100 Delis 等于 1 Daranen,100 Daranen 等于 1 Rhodonite。对Rhodonites没有限制。

因此,我试图将该货币乘以两倍。这是我的功能:

    public static Price multiply(Price price, double factor) {
       int de = (int)Math.round(price.getDelis() * factor);
       int da = (int)Math.round(price.getDaranen() * factor);
       int r = (int)Math.round(price.getRhodoniten() * factor);
       if ((de / 100) >= 1) {
           de = de % 100;
           da += de / 100;
       }
       if ((da / 100) >= 1) {
           da = da % 100;
           r += da / 100;
       }
       return new Price(r, da, de);
    }

所以当我乘法时,如果乘法的熟食大于 100,它应该被添加到 daranen 中,daranen 和 rhodonites 的计数相同。

下面是一个例子,乘以因子 2:前一个是乘法前,后一个是相乘。

例子

如您所见,乘法本身有效,但将余数加到下一个更高的硬币类型中无效。我很高兴得到任何帮助,对 Java 来说还是很陌生。

标签: javamultiplicationmodulo

解决方案


您应该只跟踪您的 Delis 的实际值,假设在屏幕截图上您有 36053 Delis,然后您只需执行简单的操作,每当您显示您的值时,您都可以将其格式化为“文本明智”。

注意:如果你可以有高于 2147483647 的值,你应该使用 long 而不是 int


推荐阅读