Ang*_*ata 6 java apache-commons-math
我正在使用commons-math 3.6.1.
我需要将double值舍入为2进制
我们假设这是我的双重值:
double d = 400.54540997260267;
Run Code Online (Sandbox Code Playgroud)
现在通过舍入这个数字,我期待结果 400.54
相反,如果我的数字是双倍的,d1 = 400.54640997260267;我期待结果400.55
现在我正在使用此代码:
Precision.round(d, 2, BigDecimal.ROUND_DOWN);
Run Code Online (Sandbox Code Playgroud)
如果我使用舍入方法,BigDecimal.ROUND_DOWN我总是得到最低的舍入.我应该使用哪种舍入方法才能得到我所掌握的内容?
谢谢Angelo
UPDATE
我没有理解downvoting的原因我尝试了以下代码:
public class TestCalcoli
{
private static final Logger logger = LoggerFactory.getLogger(TestCalcoli.class.getName());
private void calc(double d)
{
double result = Precision.round(d, 2, BigDecimal.ROUND_HALF_DOWN);
double result2 = Precision.round(d, 2, BigDecimal.ROUND_HALF_UP);
logger.info("d--> "+d+" result --> "+result+" result2 --> "+result2);
}
@Test
public void calcola()
{
try
{
double d = 400.54540997260267;
double d1 = 400.54640997260267;
calc(d1);
calc(d);
}
catch (Exception e)
{
logger.error("errore", e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
2017-07-31 09:29:44,608 317 [main] INFO i.e.c.r.pwb.test.TestCalcoli - d--> 400.54640997260265 result --> 400.55 result2 --> 400.55
2017-07-31 09:29:44,612 321 [main] INFO i.e.c.r.pwb.test.TestCalcoli - d--> 400.54540997260267 result --> 400.55 result2 --> 400.55
Run Code Online (Sandbox Code Playgroud)
所有建议的答案都没有给我我期待的结果,或者有一些我想念的东西或者所有给出的答案都有点太仓促
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |