0

floatおよびintデータ型に対する Java 数学演算に関する質問。

2 つの日付の間の年月日差を計算する必要があります。

コード:

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Object date = obj.getInfoItem().getInfoValue();

Date today = new Date();
Date birthDate = null;
float dateDiff;
int age0, age1;

try {
        // unify the date format
        birthDate = format.parse(date.toString());
        today = format.parse(format.format(today));
} catch (ParseException e) {
        e.printStackTrace();
}

// calculate the age in years with round    
dateDiff = today.getTime() - birthDate.getTime();
age0     = (int)((dateDiff / (24 * 60 * 60 * 1000)) / 365);
age1     = (int)(dateDiff / (365 * 24 * 60 * 60 * 1000));

Java の日付の差はミリ秒単位で計算されるため、計算後にハウスキーピング作業を行い、受信した結果をミリ秒から年に変換する必要があります。

コードの実行後、デバッガーで次の結果が得られました。

dateDiff = 8.4896639E11  
age0 = 26  
age1 = 577

age0は正しい結果です。

age0とに対する演算age1は数学的に等しいのに、結果が異なるのはなぜですか? (float / (a\*b\*c)) / d« » と « (float / (a\*b\*c\*d))»の操作に違いがあるのabなぜですか。cdint

4

1 に答える 1