Android显示整数和浮点数的复数形式

Android显示整数和浮点数的复数形式,android,Android,我的目标是显示像“1星”、“2.5星”、“3星”这样的文本 对于浮点值,如1.0、2.0等,删除.0。但对于.5的值,显示浮点值2.5、3.5等。 这可以使用android复数吗 我用这种方法,但不起作用。 plurals.xml <plurals name="hotel_card_rating_text"> <item quantity="zero">@string/text_zero</item> <item quan

我的目标是显示像“1星”、“2.5星”、“3星”这样的文本

对于浮点值,如
1.0、2.0等,删除
.0
但对于
.5
的值,显示浮点值
2.5、3.5等。

这可以使用android
复数吗

我用这种方法,但不起作用。 plurals.xml

<plurals name="hotel_card_rating_text">
        <item quantity="zero">@string/text_zero</item>
        <item quantity="one">@string/text_one</item>
        <item quantity="two">@string/text_two</item>
        <item quantity="few">@string/text_few</item>
        <item quantity="many">@string/text_many</item>
        <item quantity="other">@string/text_other</item>
    </plurals>
<resources>
    <string name="text_zero">%.1f stars</string>
    <string name="text_one">1 star</string>
    <string name="text_two">%.1f stars</string>
    <string name="text_few">%.1f stars</string>
    <string name="text_many">%.1f stars</string>
    <string name="text_other">%.1f stars</string>
</resources>

您可以尝试使用下面的代码段,这是非常典型的

String somePostFixText = "star";
String output;
double starCount;

if (starCount > (double)1)
      somePostFixText = somePostFixText+"s";

if(starCount == (long) starCount){
       output = String.format("%d",(long)starCount)+" "+somePostFixText;
} else {
       output = String.format("%s",starCount)+" "+somePostFixText;
}

//do whatever you want to do with output variable

快乐编码

strings.xml使用
%s
而不是
%.1f

<resources>
    <string name="text_zero">%s stars</string>
    <string name="text_one">1 star</string>
    <string name="text_two">%s stars</string>
    <string name="text_few">%s stars</string>
    <string name="text_many">%s stars</string>
    <string name="text_other">%s stars</string>
</resources>
使用复数时要小心。它有自己的问题,见下文:


啊。。!好的,我猜上面的代码也会与你的机制一起工作,只是通过将值转换为静态资源进行一些小的更改,你就可以实现你想要的。数量
zero
quantity没有问题-这只是对数量如何工作以及它们的用途的常见误解。例如,
zero
one
two
并不分别直接映射到精确的数字0、1和2,因此并非所有语言都使用这些数字(尽管这些数字显然可以被所有语言使用)。
<resources>
    <string name="text_zero">%s stars</string>
    <string name="text_one">1 star</string>
    <string name="text_two">%s stars</string>
    <string name="text_few">%s stars</string>
    <string name="text_many">%s stars</string>
    <string name="text_other">%s stars</string>
</resources>
DecimalFormat format = new DecimalFormat("#.#"); // format the number
float rating = getRating();
getContext().getResources()
    .getQuantityString(R.plurals.hotel_card_rating_text, (int) rating, format.format(rating)));