/ / C # ToString ("00") двозначність - c #, форматування рядків, tostring, неоднозначність

Неоднозначність C # ToString ("00") - c #, строкове форматування, tostring, невизначеність

На цьому сторінка він говорить:

Специфікатор "00" викликає округлення значеннядо найближчої цифри, що передує десятковій, де завжди використовується округлення від нуля. Наприклад, форматування 34,5 з "00" призведе до значення 35.

"00" - це окремий випадок чи приклад? Чому це конкретно виділено?

Що таке режим округлення форматів, окрім "00"? Він конкретно згадує ціле ціле округлення; як щодо округлення після п яти знаків після коми?

Що робить ToString ("0")? Це те саме, що і "00", але немає округлення?

Я спробував ToString ("00"), і він дав мені нульове число, де я очікував лише одну цифру.

Відповіді:

5 за відповідь № 1

"00" - це не окремий випадок, а лише приклад, хоча так, як його викладено, це звучить як окремий випадок.

З документації:

Спеціальний специфікатор формату "0" служить асимвол нульового заповнення. Якщо значення, яке відформатоване, має цифру в позиції де нуль відображається у рядку формату, ця цифра копіюється в рядок результатів; інакше в рядку результатів з’являється нуль. The положення крайнього лівого нуля перед десятковою комою та крайній правий нуль після десяткової крапки визначає діапазон цифр які завжди присутні в рядку результатів.

Тож ToString ("00") означає, що у вас буде мінімум з двох цифр ліворуч від десяткової коми і НІ цифр праворуч від десяткової крапки (ці округлюються). Так само ToString ("000") дасть вам мінімум 3 цифри тощо.

Ви також можете керувати точно кількість цифр, яка з’явиться праворуч віддесяткової крапки. ToString ("000.00") дасть вам щонайменше 3 цифри ліворуч від десяткової крапки і точно 2 цифри праворуч. Будь-які додаткові цифри праворуч від десяткової коми будуть округлені.

Ось кілька проголошених тверджень для демонстрації:

var value = 67.89;
Assert.AreEqual("68", value.ToString("0"));
Assert.AreEqual("68", value.ToString("00"));
Assert.AreEqual("068", value.ToString("000"));
Assert.AreEqual("067.9", value.ToString("000.0"));
Assert.AreEqual("067.89", value.ToString("000.00"));
Assert.AreEqual("067.890", value.ToString("000.000"));

1 для відповіді № 2

Мені це схоже на помилку в документації, їхні приклади показують це як прокладений цілий вихід.

int.ToString("format")

Є еквівалентом

string.Format("0:format", int)