【发布时间】:2012-07-12 06:00:46
【问题描述】:
Java 新手,编程相对较新。下面的代码是已经完美运行的程序的最后几行——我只想对最终结果(newTuition 变量)进行四舍五入并将其限制为两位有效数字。
newTuition、TUITIONINCREASE 和学费都是双倍的。
newTuition = ((TUITIONINCREASE * .01) * tuition) + tuition + ".");
System.out.println("Your current tuition is $" + tuition + ". It will rise next year by " + TUITIONINCREASE + "% and " +
"your new tuition will be $" + newTuition);
【问题讨论】:
-
欢迎来到 SO:你说你对编程比较陌生,所以这里有一个免费的教训:不要使用浮点类型来存储货币值。 (谷歌它有无数的原因解释)
-
你可以参考[这个帖子][1]。 [1]:stackoverflow.com/questions/153724/…
-
除了使用 double 存储资金的愚蠢想法(如 @John3136 所述)之外,您的代码的第一行在编译时失败。显然你不能附加一个“。”以双倍值结束期望得到双倍的回报。也许
newTution毕竟是String? -
lismorski,是的,那个时期是复制粘贴错误。是的,既然你们都告诉我了,我觉得使用浮点类型来表示货币价值很愚蠢。我们还没有学到任何关于 BigDecimal 的知识,因为这是我使用其中一些变量/常量进行计算的唯一代码行,所以我认为讲师会活下来。 ;)
-
感谢关伦的链接。我去看看。
标签: java double rounding significant-digits