截断双数

时间:2016-02-17 03:58:21

标签: java numbers rounding number-formatting

我正在使用一个计算最早期限算法的java程序。除了双号之外,一切似乎都能正常工作。当我计算平均值(周转时间和等待时间)时,通常答案是这样的:

18.566666666666663

我想要将两个小数位的答案剪切(不是四舍五入),所以答案应该是:

18.56

好的,我尝试在控制台屏幕上打印结果:

System.out.println (String.format ("%.2f", ttAve)); // ttAve contains 18.566666666666663

但是,打印时数字将会四舍五入:

18.57

我该怎么办?

4 个答案:

答案 0 :(得分:2)

使用DecimalFormat

<%= f.select :person, User.where(verified_person: 't').pluck(:first_name, :last_name) %>

请注意,DecimalFormat df = new DecimalFormat("#.##"); df.setRoundingMode(RoundingMode.DOWN); System.out.println(df.format(18.566666666666663)); System.out.printf都使用系统默认语言环境进行格式设置,因此在某些国家/地区可能会出现意外DecimalFormat而不是18,56。如果不希望这样,您可以明确指定区域设置:

18.56

答案 1 :(得分:0)

您可以执行类似

的操作
double cutValue = Math.floor(a * 100.0) / 100.0;

答案 2 :(得分:0)

您可以尝试使用以下代码吗?

DecimalFormat format = new DecimalFormat("#.##");
format.setRoundingMode(RoundingMode.FLOOR);
System.out.println (format.format(ttAve));

答案 3 :(得分:0)

您可以使用此方法:

float roundResult (float f) {
   int precise = 100;
   f = f * precise;
   int i = (int) f;
   return (float) i / precise;
}