如果一打鸡蛋的价格是 1.50 美元,DecimalFormat 表示一个鸡蛋的价格是 0.12 而不是 0.13
如果你去商店买了一个鸡蛋十二次,你只需支付 1.44 美元
但如果每打的价格是 1.51,它给出了正确的答案。
显然 DecimalFormat 使用此规则进行舍入:
“如果余数大于 (>) 5,则向上取整”
它应该使用这个规则:
“如果余数大于或等于 (>=) 5,则向上取整”
下面是一个简单的 Android 项目来演示这一点。
如果我是正确的,向 Google 报告此错误的程序是什么?
package Egg.Price;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import java.text.DecimalFormat;
import java.text.NumberFormat;
public class MyEggPrice extends Activity
{ double xPricePerDozen, xPricePerEgg;
NumberFormat xMoney = new DecimalFormat("0.00");
TextView thePrice;
String xString;
@Override
public void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState);
setContentView(R.layout.main_egg);
xPricePerDozen = 1.50; //user would normally enter via an EditText
xPricePerEgg = (xPricePerDozen / 12);
xString = xMoney.format(xPricePerEgg);
thePrice = (TextView) findViewById(R.id.the_price);
thePrice.setText(xString);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent" android:layout_height="fill_parent"
>
<TextView android:text="Price Per Egg"
android:layout_width="fill_parent" android:layout_height="30dip"
/>
<TextView android:id="@+id/the_price"
android:layout_width="fill_parent" android:layout_height=30dip"
/>
</LinearLayout>