Java DecimalFormat类不必要地给出整数
我想显示的GPS坐标最多只有6位小数。e、 g.如果我的GPS位置类似于Java DecimalFormat类不必要地给出整数,java,android,decimalformat,Java,Android,Decimalformat,我想显示的GPS坐标最多只有6位小数。e、 g.如果我的GPS位置类似于x.yyyyyyyy我只想显示x.yyyyyy,为此我使用DecimalFormat类。但是,如果数字类似于8.3456709012,则以下代码的输出类似于8.34568 _yPos = 8.3456709012; DecimalFormat decimalFormat = new DecimalFormat("#.######"); String yCoord = decimalFormat.format(_yPos);
x.yyyyyyyy
我只想显示x.yyyyyy
,为此我使用DecimalFormat
类。但是,如果数字类似于8.3456709012
,则以下代码的输出类似于8.34568
_yPos = 8.3456709012;
DecimalFormat decimalFormat = new DecimalFormat("#.######");
String yCoord = decimalFormat.format(_yPos);
而预期输出为8.345670
。有人能告诉我怎么做吗?这是新的十进制格式(“0”)
是新的十进制格式(“0”)吗
使用“0.000000”
作为格式化代码
字符#表示“数字,零表示不存在”:
此外,如果您确实想要输出8.345670
而不是8.345671
,则必须将舍入模式设置为DOWN
:
DecimalFormat decimalFormat = new DecimalFormat("0.000000");
decimalFormat.setRoundingMode(java.math.RoundingMode.DOWN);
使用“0.000000”
作为格式化代码
字符#表示“数字,零表示不存在”:
此外,如果您确实想要输出8.345670
而不是8.345671
,则必须将舍入模式设置为DOWN
:
DecimalFormat decimalFormat = new DecimalFormat("0.000000");
decimalFormat.setRoundingMode(java.math.RoundingMode.DOWN);
Joni Salonen的回答建议如何保留尾随零,但坐标仍将半舍入,因为默认舍入模式为RoundingMode.half_偶数 可以使用设置舍入模式
decimalFormat.setRoundingMode(RoundingMode.DOWN);
此方法自1.6版起可用
请参阅Joni Salonen的回答,其中建议了如何保留尾随零,但坐标仍将半舍入,因为默认舍入模式为舍入模式。半舍五入偶数 可以使用设置舍入模式
decimalFormat.setRoundingMode(RoundingMode.DOWN);
此方法自1.6版起可用
请参阅真正的解决方案。OP只想显示尾随的0开场白还指定他得到的是“圆形数字”,我认为这是解决问题的方法..编辑答案:-)这才是真正的解决方案。OP只想显示尾随的0开场白还指定他得到的是“圆形数字”,我假设这是解决这个问题的方法..编辑了答案:-)你确定要
8.345670
而不是8.345671
?后者将是显示更少数字的传统方式(即舍入),因此使用截断行为是不寻常的,只有在应用程序域真正需要它时才应该执行(IMHO)。此外,如果我运行您的示例(假设\u yPos
是双),我会得到8.345671
)的输出,不是8.34568
。你确定这就是你实际运行的代码吗?你的问题可能在别处。@AndrzejDoyle:观察得不错。但当然,这不是实际代码,我是从定位接收器获取GPS坐标的。我只举了一个例子,说明它是四舍五入的。无论如何,谢谢0.000000
帮助了我。您确定要8.345670
而不是8.345671
?后者将是显示更少数字的传统方式(即舍入),因此使用截断行为是不寻常的,只有在应用程序域真正需要它时才应该执行(IMHO)。此外,如果我运行您的示例(假设\u yPos
是双),我会得到8.345671
)的输出,不是8.34568
。你确定这就是你实际运行的代码吗?你的问题可能在别处。@AndrzejDoyle:观察得不错。但当然,这不是实际代码,我是从定位接收器获取GPS坐标的。我只举了一个例子,说明它是四舍五入的。无论如何,谢谢<代码>0.000000帮助了我。那不是他的问题的答案。。他不需要四舍五入。。8.3456709012的结果是什么?@Shehzad根据OP“预期输出是8.345670
”,因此看起来他确实需要四舍五入。他要求的输出是8.345670,但“0.000000”?->8.345671这不是他的问题的答案。。他不需要四舍五入。。8.3456709012的结果是什么?@Shehzad根据OP“预期输出是8.345670
”,因此他看起来确实需要四舍五入。他要求的输出是8.345670,但“0.000000”?->8.345671