Kyl*_*ans 0 java floating-point formatting return decimal
作为一个更大的程序的一部分,我有这个函数,当被调用时,返回返回的字符串.accountHolder,balance,interestRate和points是RewardsCreditAccount类型的对象中的变量.所以,例如,我在这里声明了一个对象:
RewardsCreditAccount testAccount = new RewardsCreditAccount("Joe F. Pyne", 7384.282343837483298347, 0.173, 567);
Run Code Online (Sandbox Code Playgroud)
所以这个对象将设置accountHolder ="Joe F. Pyne",balance = 7384.282343837483298347,依此类推.
在下面的函数中,我将这个信息返回一个字符串,如下所示:
Joe F. Pyne,7384.282美元,17.28%,567分
使用此功能:
public String toString() {
return (accountHolder + ", $" + + balance + 100*interestRate + "%, " + points + " points");
}
Run Code Online (Sandbox Code Playgroud)
但是,它实际上是返回此:
Joe F. Pyne,$ 7384.282,17.299999999999997%,567分
我试过这个,但无济于事
public String toString() {
return (accountHolder + ", $" + + ("%,1.2f",balance) + 100*interestRate + "%, " + points + " points");
}
Run Code Online (Sandbox Code Playgroud)
这很烦人,因为我希望它只返回两个小数位.我知道这可以使用%1.2f完成,但我不知道如何格式化语法.我非常感谢任何有关正确显示十进制值的帮助.谢谢!
你必须使用String.format();那种格式 - 字符串.
所以这
public String toString() {
return (accountHolder + ", $" + + ("%,1.2f",balance) + 100*interestRate + "%, " + points + " points");
}
Run Code Online (Sandbox Code Playgroud)
应该:
public String toString() {
return String.format("%s, $%,1.2f %s%%, %s points", accountHolder, balance, 100*interestRate, points );
}
Run Code Online (Sandbox Code Playgroud)
设置格式化程序,以便根据您的需要进行打印.
使用 DecimalFormater 格式化您的值。
new DecimalFormat("###.##").format(17.299999999999997);
Run Code Online (Sandbox Code Playgroud)
以供参考。