我有最后2位数阀门必须是圆形的值。我可以在JavaScript toFixed(6)中实现此功能。但是我们如何在java代码中实现相同的目标
示例:
Input=75.74306816000052
Input =26.910038862000476
Output=75.743070
Output=26.910040
代码:
BigDecimal Output= new BigDecimal(Input).setScale(6, RoundingMode.HALF_EVEN)
但是听到的输出值是
75.743068
26.910038
答案 0 :(得分:1)
由于你帖子中的评论已经说明,java中的舍入是正确的,我不确定你想要实现什么。但这会为您提供您期望的输出:
public static void main(String[] args) throws Exception {
String Input="75.74306816000052";
String Input2 = "26.910038862000476";
BigDecimal Output= new BigDecimal(Input).setScale(5, RoundingMode.HALF_EVEN);
System.out.println(Output.setScale(6)); //75.743070
BigDecimal Output2= new BigDecimal(Input2).setScale(5, RoundingMode.HALF_EVEN);
System.out.println(Output2.setScale(6)); //26.910040
}
答案 1 :(得分:0)
为什么不使用String::format
并将字符串转换为BigDecimal
,如下所示:
String num1 = String.format(Locale.UK, "%.5f", 75.74306816000052);
String num2 = String.format(Locale.UK, "%.5f", 26.910038862000476);
//----------------------------------------^-----------------------
BigDecimal b1 = new BigDecimal(num1);
BigDecimal b2 = new BigDecimal(num2);
System.out.println(b1);
System.out.println(b2);
这可以为您提供:
75,74307
26,91004
修改强>
您的解决方案完美无缺,但有5而不是6:
BigDecimal Output= new BigDecimal(26.910038862000476).setScale(5, RoundingMode.HALF_EVEN);
此印刷品:
26.91004