Значение String.format () в метке строки состояния отображается по-разному в Win 7 и Win XP

Я использую следующий код для отображения прошедшего времени выполнения задачи в строке состояния в моем приложении.

public void DisplayDuration(TimeSpan duration)
{
    string formattedDuration;

    if (duration.TotalMilliseconds < 2000)
        formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds);
    else if (duration.TotalSeconds < 60)
        formattedDuration = string.Format("{0} sec", duration.TotalSeconds);
    else
        formattedDuration = string.Format("{0} min", duration.TotalMinutes);

    this.TimingLabel.Text = formattedDuration;
}

this.TimingLabel - это метка в элементе управления statusStrip в нижнем колонтитуле winform.

Но я получаю совершенно разные результаты в Windows XP и Windows 7

Windows XP: elapsed Time formatted XP

Windows 7 elapsed Time formatted 7

Почему в Windows 7 единицы появляются раньше времени?

Я проверил региональные настройки, обе машины настроены на США с одинаковым форматированием даты и времени. Убедитесь, что на обеих машинах работает один и тот же код. Это очень странное поведение в очень простом коде.

В качестве продолжения: я внес следующие изменения в свой код, но проблема все еще остается:

formattedDuration = string.Format("{0} ms", duration.TotalMilliseconds.ToString()); 
13
задан Gary Kindel 9 January 2012 в 20:36
поделиться