在 toast Android 中使用 String.format() 字符串

Using String.format() string in a toast Android

我想弄清楚如何输入格式化字符串以在 toast 中使用。 toast 使用普通的旧字符串,例如

string s1 = "You scored"

但它不适用于 String.format()。为什么是这样?有什么办法可以解决这个问题吗?我已经知道如果我这样做会起作用

Toast.makeText(this, "You scored: " + score + "%", Toast.LENGTH_LONG).show();

但我希望百分比没有任何小数。我四处搜索但找不到答案。

这是行不通的:

float score = ((float) mNumberCorrect / 6)*100;

Toast.makeText(this, String.format("You scored: %d", score) , Toast.LENGTH_LONG).show();

你必须像下面那样用 %f 代替 %d

float score = ((float) mNumberCorrect / 6)*100;

Toast.makeText(this, String.format("You scored: %f", score) , Toast.LENGTH_LONG).show();

如果您想避免使用小数点,请尝试使用 int

int score = Math.round(mNumberCorrect / 6 * 100)
Toast.makeText(this, String.format("You scored: %d", score) , Toast.LENGTH_LONG).show();

请注意,您使用的 %d 表示整数,而不是浮点数。有关用于不同数据类型的详细信息,请参阅 this document

IMO 你可能会得到字符串格式的浮点值,然后像上面那样在 Toast 中显示

 float score = ((float) mNumberCorrect/ 6)*100;
    String sr = String.valueOf(score);

    Toast.makeText(this,"You scored: " + sr , Toast.LENGTH_LONG).show();

您可以简单地这样做:

float score = ((float) mNumberCorrect / 6)*100;

Toast.makeText(this, String.format("You scored: %d %%", score) , Toast.LENGTH_LONG).show();

%% 转义百分比 (%) 字母并为您提供所需的输出