Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DecimalFormat类不必要地给出整数_Java_Android_Decimalformat - Fatal编程技术网

Java DecimalFormat类不必要地给出整数

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);

我想显示的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);
而预期输出为
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