Форматування поплавця до 2 знаків після коми


210

Наразі будую модуль продажу для веб-сайту клієнтів. Поки що у мене продажна ціна була ідеально підрахована, але там, де я застрягла, - це форматування результатів у 2 десяткові коми.

В даний час я називаю це змінною, щоб я міг дані прив'язувати результати до перегляду списку.

Sale = float.Parse(((x.Sale_Price - (x.Sale_Price * (x.Discount_Price / 100))).ToString())),

Чи може хто-небудь показати мені, як відформатувати вихід до 2 знаків після коми? Велике дякую!


Перевірте це, я не впевнений, але можливо, це спрацює ToString ("#. ##");
Сеєда

Відповіді:


467

Ви можете передати формат ToStringметоду, наприклад:

myFloatVariable.ToString("0.00"); //2dp Number

myFloatVariable.ToString("n2"); // 2dp Number

myFloatVariable.ToString("c2"); // 2dp currency

Стандартні рядки формату чисел


38
"N2" і "C2" додадуть тисячі роздільників, тоді як "0,00" не будуть.
Марк К

5
На всякий випадок, якщо ви не впевнені (я був), усі ці способи форматування значення з плаваючою величиною забезпечують округлення.
RenniePet

46

Перше, що вам потрібно зробити - це використовувати decimalтип замість floatціни. Використання для floatцього абсолютно неприйнятно, оскільки воно не може точно представити більшість десяткових дробів.

Після того, як ви це зробите, Decimal.Round()його можна використовувати для округлення до 2-х місць.


36

String.Format("{0:#,###.##}", value)

Більш складний приклад форматування рядків у C # :

String.Format("{0:$#,##0.00;($#,##0.00);Zero}", value);

Це призведе до отримання "1,240,00 $", якщо він пройде 1243,50. Він виведе той самий формат, але в дужках, якщо число від’ємне, і виведе рядок «Нуль», якщо число дорівнює нулю.



4
string outString= number.ToString("####0.00");

1
У спеціальному форматі між "0" і "#" є різні. "0": замінює нуль відповідною цифрою, якщо така є; інакше нульовий рядок відображається в рядку результатів. "#": Замінює символ "#" відповідною цифрою, якщо така є; інакше в рядку результатів не з’являється жодна цифра. Довідка
劉鎮 瑲

3

Як вже було сказано, вам потрібно буде скористатися відформатованим результатом; який все це робиться через Write(), WriteLine(), Format()і ToString()методи.

Що вже не згадувалося - це формат з фіксованою точкою, який дозволяє задати кількість десяткових знаків. Він використовує 'F', а число, що слідує за 'F', - це кількість виведених десяткових знаків, як показано в прикладах.

Console.WriteLine("{0:F2}", 12);    // 12.00 - two decimal places
Console.WriteLine("{0:F0}", 12.3);  // 12 - ommiting fractions

2

Це стосується випадків, коли ви хочете використовувати інтерпольовані рядки . Я фактично розміщую це повідомлення, тому що мені набридло спроб і помилок і, врешті-решт, прокручую тони документів щоразу, коли мені потрібно відформатувати якийсь скаляр.

$"{1234.5678:0.00}"        "1234.57"        2 decimal places, notice that value is rounded
$"{1234.5678,10:0.00}"     "   1234.57"     right-aligned
$"{1234.5678,-10:0.00}"    "1234.57   "     left-aligned
$"{1234.5678:0.#####}"     "1234.5678"      5 optional digits after the decimal point
$"{1234.5678:0.00000}"     "1234.56780"     5 forced digits AFTER the decimal point, notice the trailing zero
$"{1234.5678:00000.00}"    "01234.57"       5 forced digits BEFORE the decimal point, notice the leading zero
$"{1234.5612:0}"           "1235"           as integer, notice that value is rounded
$"{1234.5678:F2}"          "1234.57"        standard fixed-point
$"{1234.5678:F5}"          "1234.56780"     5 digits after the decimal point, notice the trailing zero
$"{1234.5678:g2}"          "1.2e+03"        standard general with 2 meaningful digits, notice "e"
$"{1234.5678:G2}"          "1.2E+03"        standard general with 2 meaningful digits, notice "E"
$"{1234.5678:G3}"          "1.23E+03"       standard general with 3 meaningful digits
$"{1234.5678:G5}"          "1234.6"         standard general with 5 meaningful digits
$"{1234.5678:e2}"          "1.23e+003"      standard exponential with 2 digits after the decimal point, notice "e"
$"{1234.5678:E3}"          "1.235E+003"     standard exponential with 3 digits after the decimal point, notice "E"
$"{1234.5678:N2}"          "1,234.57"       standard numeric, notice the comma
$"{1234.5678:C2}"          "$1,234.57"      standard currency, notice the dollar sign
$"{1234.5678:P2}"          "123,456.78 %"   standard percent, notice that value is multiplied by 100
$"{1234.5678:2}"           "2"              :)

Попередження про виконання

Інтерпольовані рядки повільні. На мій досвід, це порядок (швидкий до повільного):

  1. value.ToString(format)+" blah blah"
  2. string.Format("{0:format} blah blah", value)
  3. $"{value:format} blah blah"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.