java - 自定义货币系统乘法
问题描述
我还在学习,所以放轻松。
我有以下货币系统:
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 来说还是很陌生。
解决方案
您应该只跟踪您的 Delis 的实际值,假设在屏幕截图上您有 36053 Delis,然后您只需执行简单的操作,每当您显示您的值时,您都可以将其格式化为“文本明智”。
注意:如果你可以有高于 2147483647 的值,你应该使用 long 而不是 int
推荐阅读
- python - 如何在 Django 中序列化对象数组
- video - 使用 jpg 图像从 ffmpeg 创建延时视频
- c - 使用 fgets(3) 时跳过过大的输入
- c++ - 二叉树中第 n 层位置 k 的元素
- json - 我在使用烧瓶打印此 API 的响应时遇到错误
- python-3.x - 使用 Pydantic 和 Motor 创建 ISODate
- pip - 安装后在虚拟环境中找不到模块
- ansible - 我只是试图在每个剧本中写一个相同的错误
- awk - Print unique specific text form a line if it meet the search criteria
- php - 如何从 Google Sheets API 获取文本颜色格式?