关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
25天前关门了。
改进这个问题
我在努力得到正确的结果 BigDecimal
几个小时。
我的电话号码是7.7049。我想把第一轮改为3位数。我要7.705英镑。再把这个四舍五入到2位数。我应该得到7.71分。
我试过这个:
BigDecimal(result).setScale(2, RoundingMode.HALF_UP) //instead of 2 can be any other number
但我打错电话了: 7.70
.
我试过不同的模式。我也试过了 valueOf(result.toDouble())
什么都不管用。这里的问题看起来像 setScale
仅使用后两位数字 .
无视他人。
我怎样才能解决这个问题?
更新时间:
更多示例:
7.7019必须是7.70 | 7.7052必须是7.71 | 7.7071必须是7.71 | 7.7030必须是7.70
2条答案
按热度按时间3hvapo4f1#
你可以先四舍五入前三位,然后再四舍五入前两位来得到你想要的。
结果与您的测试用例兼容。我没有对负数进行过测试,对于任意精度的数字,它可能不会产生预期的结果。
你可以参考文件的舍入模式,并使用这个想法,也许想出一个方案,舍入数字在非标准的方式你想要的。
ct3nt3jp2#
问题很简单。我的电话号码是7.7049。当我想四舍五入到3位数之后。我将得到7.705,但当我将这个四舍五入更多,到2位数,我应该看到7.71。
你已经提到了你需要做的事情,即先用音阶旋转
3
然后用天平2
.演示:
输出: