【问题标题】:Format Doubles to String [duplicate]将双精度数格式化为字符串 [重复]
【发布时间】:2012-08-25 16:07:57
【问题描述】:

可能重复:
How to nicely format floating types to String?

如何列出最多保留两位小数的数字?我试过这个方法:http://developer.android.com/reference/java/text/NumberFormat.html 但没有运气。下面的代码。也许有人可以帮助我。

package karcio.fuel.economy;


public class FuelEconomy extends Activity 
{
    private EditText editText1;
    private EditText editText2;

private TextView textView4;
private TextView textView6;

private Button button1;

private double miles;
private double liters;
private double result;
private double convertMilesToKm;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    initParams();
}

private void initParams()
{
    editText1 = (EditText)findViewById(R.id.editText1);
    editText2 = (EditText)findViewById(R.id.editText2);

    textView4 = (TextView)findViewById(R.id.textView4);
    textView6 = (TextView)findViewById(R.id.textView6);

    button1 = (Button)findViewById(R.id.button1);

    button1.setOnClickListener(new Button.OnClickListener() 
    { 
        public void onClick (View v)
        { 
            calculate(); 
        }
    });

}

private void calculate()
{
    miles = Double.parseDouble(editText1.getText().toString());
    liters = Double.parseDouble(editText2.getText().toString());

    convertMilesToKm = miles * 1.61;
    result = 100 * liters / convertMilesToKm;

    textView6.setText(Double.toString(convertMilesToKm));
    textView4.setText(Double.toString(result));         
}

}

【问题讨论】:

标签: java android number-formatting


【解决方案1】:

你可以尝试手动操作。

//This is just an example
double number = result;  //result is YOUR variable (ex. result = 23.1231231241920312)
int tmp = number * 100;   //2312.31231241920312
number = (double)tmp / 100;  //23.12

希望这会有所帮助。

注意:如果您在另一行执行,则可以跳过我声明 INT 的步骤。

更新:使用这种方法的好处是你不需要创建一个更快的Object,当然还有很多方法。

【讨论】:

  • 我不能手动操作,用户必须自己输入数字。
  • 我的意思是您手动限制点 (.) 后的两位数。
  • Tnx,我也会试试你的方法 :) 谢谢你的快速回复,我是新手,我很感激 :)
  • 别担心,你最好使用@cskoala 答案,阅读代码时更容易理解。
【解决方案2】:

你可以这样做:

String str = String.format("%.2f", 3.99999);
textView.setText(str);

【讨论】:

  • 这样做的缺点是您需要多一个对象来完成这项简单的任务。在 android 指南中说你需要创建尽可能少的对象。
  • 无论如何你都会有一个 String 对象,而这是一个 String 对象。当您设置文本时,您的方法最终会创建该 String 对象。
  • 您是对的,但是如果您测试这样做的性能与手动执行和转换为字符串相比,您会注意到差异(当然,在一个大循环中只有一个是一样)。
  • Tnx 该方法对我有用。 String ConvertMilesToKm = String.format("%.0f", convertMilesToKm); textView6.setText(ConvertMilesToKm);
  • 我不得不接受你的回答比我的对新用户更有帮助,因为我不得不解释这个数字不是硬编码的,所以我会给你一个支持
猜你喜欢
  • 2020-02-04
  • 1970-01-01
  • 2017-10-06
  • 2014-01-06
  • 2023-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多