繁体   English   中英

改变双回合的方式

[英]Changing how a double rounds

我有很多数据是从数据库中检索的,并使用这些数据创建图表(添加了其中一些)

图表之一显示百分比,因此我必须将数据计算为百分比。

我的老板有另一个程序,该程序也显示百分比(但没有图形),制作完程序后,他来找我,说表中的数字有误。

我查看了一下,发现加倍数(按百分比计算)为以下数字: 85.53178390026166

显然,我的程序将此数字四舍五入为86。

现在我的问题是:有什么方法可以阻止程序舍入加倍,除非它是0.75或更小? 而是在此示例中向下舍入到85?

首先,要注意的是85.5386更接近85 话虽如此,如果您只想将其取整为.75或更大,请执行以下操作:

Math.floor(number + .25);

例:

10.2 -> 10.45 -> 10
10.6 -> 10.85 -> 10
10.74 -> 10.99 -> 10
10.76 -> 11.01 -> 11

尝试这个

import java.math.BigDecimal;
BigDecimal myDec = new BigDecimal( myDouble );
myDec = myDec.setScale( 2, BigDecimal.ROUND_HALF_UP );




import java.math.BigDecimal;
BigDecimal myDec = new BigDecimal( myDouble );
myDec = myDec.setScale( 2, BigDecimal.ROUND_HALF_DOWN );

尝试这个:

int returnRoundOffNumber(Double number)
{  

if((number-Integer.parseInt(number)>0.75)
 return Math.ceil(number);

else   
  return Math.floor(number);
}

如果您的老板很挑剔,那么我建议您不要四舍五入,而宁愿使用您与老板协商的小数位数显示数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM