[C# Basics] Форматиране на числа - Софтуерен университет

[C# Basics] Форматиране на числа - Софтуерен университет

+ Нов въпрос
Flyer avatar Flyer 150 Точки

[C# Basics] Форматиране на числа

Здравейте. Тъй като работата с числа в програнирането е често явление, тук ще опиша как може да се форматиратират, така че да придобият подходящ за презентация вид.

За да форматирате числова стойност в string, трябва да използвате Placehoder-и.

Какво е Placehoder?

Пример:

int age = 23;
Console.WriteLine("I am {0} years old.", age); // output: I am 23 years old.

В примера по-горе се вижда, че "{0}" заема стойността на променливата "age".


Може да използвате повече от един placeholder, като след всеки един цифрата в него нараства с едно:

int age = "23";
string name = "Pesho";
Console.WriteLine("I am {0} years old and my name is {1}.", age, name);

 

Формати за числа.

За примера ще използвам дробното число: 3.6543210

 

Placehoder                                       

Output:
(out of: 3.6543210)                                      

Description

{0:0}

4 Взима цялото число, като го закръгля нагоре.

 
{0:0.0}

3.7 Взима цялото число и една цифра след
десетичната запетая, закръглена нагоре.

{0:00.0}

03.7 Взима две цифри от цялото число
(ако няма добавя 0), и едно след десетичната запетая.


{0:1.##}

3.65 Взима цялото число, и две цифри след
десетичната заперая, ако има такива.

{0, 10}

          3.6543210 Премества числото с 10 символа вдясно.

 
{0:My number is 0.0}
     

My number is 3.7 Вмъква текст преди числото.

{0:P}

365,43 % Представя числото в проценти.


{0:E}

3,654321E+000 Представя числото в експоненциална нотация.

{0:C}

3,65 лв. Представя числото като валута, спрямо регионалните настройки.


{0:X}

format exeption                   Представя числото в шестнадесетична бройна система.

 

Notice: Забележете, че в последния пример, числото няма да бъде представено, тъй като този формат не работи за всички числа.

 

Това са основните форматиращи методи, като ще се радвам ако някой може да допълни с други :)

 

Успешно кодене!

Тагове:
ViValDam avatar ViValDam 23 Точки

ха ха не знам кой ги е измислял тия формати, ама са извън всякаква логика ! Може би нарочно са направени така - да не можем да ги запомним или трудно да ги помним !

Мерси - пак много полезна информация , не повтаряща се с тази от лекциите !

2
ZloboMiR avatar ZloboMiR 50 Точки

{0:C}

365,43 % Представя числото в проценти.
     

{0:C}

3,65 лв. Представя числото като валута, спрямо регионалните настройки.

 

Тези леко ме смущават със своята еднаквост. 

3
a_rusenov avatar a_rusenov 1103 Точки

Да, процентът трябва да е с P

1
Flyer avatar Flyer 150 Точки

Поправено е, Благодаря!

1
coaster avatar coaster 415 Точки

Полезна и подробна информация! :)
Искам да добавя, че има и метод на класа Math за закръгляне на числа:

Math.Round();

1
rado84 avatar rado84 1 Точки

@Flyer, в един от плейсхолдърите май си допуснал грешка. В последната задача, която решавах трябваше да използвам плейсхолдър и така установих, че {0:1.##} изкарва числото с една единица отпред. За да изкара само числото със съответния брой символи след десетичната запетая, трябва да е {0:0.##}.

Резултатът излезе правилно (25) едва, когато направих плейсхолдъра да е {0:0.###}. Ако искаш, мога да ти дам целия код на програмата, за да го тестваш сам.

0
milenski1989 avatar milenski1989 2 Точки

Това забелязах и аз преди 1 час, че ми изкарва резултата с 1-ца отпред :)

0
triset avatar triset 1 Точки

Благодаря за инфото, събрано и ситематизирано от колегата @Flyer.

Полезно е и ни подарява много време, понеже като почнеш един по един да ги търсиш тези методи за работа с числа / функции е направо лудница.

Да, наистина да покаже две цифри след десетичната запетая на числото се ползва  {0:0.##} .

 

0
milenski1989 avatar milenski1989 2 Точки

За определен брой цифри след десетичната запетая, използвам {0:FX}, където X е броят цифри след запетаята. Лесно и кратко.

0
AleksanderKostadinov avatar AleksanderKostadinov 12 Точки

Всъщност в солюшъна на задачата имаше закръгляне нагоре : Маth.Ceiling(). Но закръгля само до цяло число.

 

0
25/08/2016 13:29:07
Leprikona avatar Leprikona 106 Точки

И още една добавка:

може и по този начин: {0:f...}, където f... е поредната цифра, до която искате да се форматира, и ако числото след нея е по-голямо или равно на 5, я повишава с една единица:

напр.: ако искате числото 1.23456 да се форматира до 3-ия знак ще изглежда така: {0:f3} и резултатът ще е 1.235

0
15/09/2016 16:44:42
Stradjazz avatar Stradjazz 27 Точки

Благодаря за полезната компилация!

0
stanchev1 avatar stanchev1 122 Точки

Мерси за информацията.

0
RadioDr avatar RadioDr 7 Точки

Искрено пожелавам на колегата Flyer да попадне на също толкова грешно и заблуждаващо нещо, като това, което е написал само за да трупне малко точки в ситуация, когато наистина нещо му трябва. Например в ситуация да се опита да разбере кой е гейта за неговия полет на език, който само подозира. Благодаря на останалите колеги за търпението да поправят грешките :) :)

-3
MilenaAdzhemova avatar MilenaAdzhemova 50 Точки

Как се закръгля до цяло число,но надолу?

0
krasi1105 avatar krasi1105 380 Точки

Math.Floor() закръгля надолу, Math.Truncate() закръгля към 0. Тук има по- детайлно обяснение.

0