我试图格式化我从另一个页面检索的数据,所以为什么输出不是格式。右边它应该是2236.29但它显示236.29482845736。我在我的第一页使用这种格式,它的工作原理。
//page with problem. long output
DecimalFormat df = new DecimalFormat("#.##");
Bundle extras = getIntent().getExtras();
if (extras != null)
{
Double value = extras.getDouble("dist");
df.format(value);
milesDistance = value * 0.000621371;
df.format(milesDistance);
Double durationValue = extras.getDouble("time");
Double speedValue = extras.getDouble("velocity");
Double mphSpeed = speedValue * 2.23694;
df.format(speedValue);
df.format(mphSpeed);
displayDistance=(TextView)findViewById(R.id.finishDistance);
displayDistance.setText("Distance: " + value + "meters " + milesDistance + "miles" + " Speed: " + speedValue + "m/s");
这是我的第一页,我做了同样的事,但没有问题。
//page with no problem
float[] results = new float[1];
Location.distanceBetween(lat3, lon3, myLocation.getLatitude(), myLocation.getLongitude(), results);
System.out.println("Distance is: " + results[0]);
dist += results[0];
DecimalFormat df = new DecimalFormat("#.##"); // adjust this as appropriate
if(count==1)
{
distance.setText(df.format(dist) + "meters");
有问题的页面的距离和速度输出相同(第一个代码) }
答案 0 :(得分:1)
试试这种方式
Double value = extras.getDouble("dist");
System.out.println(String.format("%.2f",value));
答案 1 :(得分:0)
您的问题是您正在调用df.format(...)但忽略了返回值,这是十进制数字格式正确的字符串表示形式。
例如,您需要写的是:
Double value = extras.getDouble("dist");
String valueString = df.format(value);
...
displayDistance.setText("Distance: " + valueString ...);
或只是
displayDistance.setText("Distance: " + df.format(value) + "meters " + df.format(milesDistance) + "miles" + " Speed: " + df.format(speedValue) + "m/s");