舍入为整数的 Java Math.pow 多次返回相同的数字

Posted

技术标签:

【中文标题】舍入为整数的 Java Math.pow 多次返回相同的数字【英文标题】:Java Math.pow rounded to integer returns the same number several times 【发布时间】:2017-05-09 16:41:53 【问题描述】:

我正在尝试制作答题器游戏,我希望机器人价格像 cookie 答题器游戏一样成倍增长。我尝试使用 cookie clicker 的价格计算公式 (http://cookieclicker.wikia.com/wiki/Building)。

if (cookies >= robotPrice) 

                cookies -= robotPrice;
                cps ++;
                //Here is the algorithm
                robotPrice = 100 * (int)Math.pow(1.15, cps);

                System.out.println("robotPrice set to " + robotPrice);

            

但是当我运行程序时,我得到以下输出:

robotPrice set to 100
robotPrice set to 100
robotPrice set to 100
robotPrice set to 100
robotPrice set to 200
robotPrice set to 200
robotPrice set to 200
robotPrice set to 300
robotPrice set to 300

等等。 请帮忙。

【问题讨论】:

这个 "(int)Math.pow(1.15, cps)" 给你一个,这就是为什么 你可能想要(int) (100 * Math.pow(1.15, cps)) 不知何故cps值在0到4之间,调试你的代码 显示有循环的代码。这个 sn-p 只有If 条件。我很确定cps 在这里被重置为1,否则代码中没有错误。甚至类型转换也不是问题。 【参考方案1】:

正如人们在cmets中指出的那样,问题出现在这行代码robotPrice = 100 * (int)Math.pow(1.15, cps);

您正在取 1.15,将其提高到 cps 的幂,然后删除所有小数位。这只会给你一个整数,然后乘以 100。 您想在删除所有小数之前将其乘以 100。 robotPrice = (int)(100 * Math.pow(1.15, cps));

【讨论】:

以上是关于舍入为整数的 Java Math.pow 多次返回相同的数字的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript——math对象

JavaScript——math对象

四舍五入round()

js四舍五入

Math的三个将小数值舍入为整数方法

Java中Math类的几个四舍五入方法的区别