zaokruhlovanie v C#

Programovacie jazyky, rady, poradňa...
MarkMarusin
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 135
Registrovaný: 30 apr 2011, 13:42

zaokruhlovanie v C#

Príspevok od používateľa MarkMarusin »

Dobry den mam taky problem v jednom kode jazyka C# kedy sa snazim zaokruhlovat na dve desatine miesta metodou Math.Round() ... cislo mi uplne v poriadku zaokruhli na dve des. miesta ak mam napr. c. 2.654 tak zaokruhli na 2.65 , ..... problem je v tom ze pokial mam cislo napr. 2.5000000000 tak mi ho jednoducho zaokruhli na c. 2.5 ale kedze ja chcem cislo na dve desatine miesta tak potrebujem z cisla 2.500000 dostat cislo 2.50 a nie 2.5

tu prikladam ukazku mojho kodu

Kód: Vybrať všetko

                double intF1 = 0;
                for (int i = 0; i < 15; i++)
                {
                    intF1 += pole[i];
                }
                double F1 = intF1 / 15;
                F1 = Math.Round(F1, 2);
                Console.WriteLine({0}, F1);
myslim si ze kod je v poriadku ... ale treba nieco dopisat/prepisat na to aby cislo 25.00000000 zaokruhlilo na 25.00 alebo cislo 6.5000 na cislo 6.50 namistlo cisel 25 alebo 6.5
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: zaokruhlovanie v C#

Príspevok od používateľa harrison314 »

Chodíš do škôlky ?
Lebo mňa v tretej triede na základnej škole učili, že 2.5 je to iste ako 2.50 .
Asi by si sa mal vrátiť k paskalu, kedže nevieš aký je rozdiel medzi výpisom a výpočtom.
Zappir
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 498
Registrovaný: 17 aug 2008, 9:38
Bydlisko: Praha / Prievidza

Re: zaokruhlovanie v C#

Príspevok od používateľa Zappir »

musis to vypisovat cez formatovany vystup, v c by to malo byt

Kód: Vybrať všetko

printf("%.2f, intF1); "
MarkMarusin
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 135
Registrovaný: 30 apr 2011, 13:42

Re: zaokruhlovanie v C#

Príspevok od používateľa MarkMarusin »

ja viem ze 2.5000000000000000000000000000000000000000 je to ise ako 2.5 ale tu ide o to ze ja potrebujem vypis na dve des. miesta cize 2.50 .... co som to vyssie nenapisal jasne harrison???

a s tym nissie uvedenim prikazom mi to nefunguje ...... a asi to nie je ani prikaz jazyka C# ale C++ .... a aj ked som skusal nahradit prikaz "printf()" za prikaz "Console.WriteLine()"
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: zaokruhlovanie v C#

Príspevok od používateľa harrison314 »

Nie napisal.
..... problem je v tom ze pokial mam cislo napr. 2.5000000000 tak mi ho jednoducho zaokruhli na c. 2.5 ale kedze ja chcem cislo na dve desatine miesta tak potrebujem z cisla 2.500000 dostat cislo 2.50 a nie 2.5
a s tym nissie uvedenim prikazom mi to nefunguje ...... a asi to nie je ani prikaz jazyka C# ale C++ .... a aj ked som skusal nahradit prikaz "printf()" za prikaz "Console.WriteLine()"
Ked si sa uz dopracoval kde je problem zostavaju ti uz len dve moznosti:
1) pouzi rozum - a pozriem si dokuemntaciu k Console.WriteLine na strankach MSDN
2) pouzi google- "format number Console.WriteLine"
MarkMarusin
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 135
Registrovaný: 30 apr 2011, 13:42

Re: zaokruhlovanie v C#

Príspevok od používateľa MarkMarusin »

ospravedlnujem sa ak som sa zle vyjadril ohladom niecoho ......... a dakujem za rady :)
ServerApp
Zablokovaný
Zablokovaný
Príspevky: 125
Registrovaný: 16 sep 2011, 15:00

Re: zaokruhlovanie v C#

Príspevok od používateľa ServerApp »

BTW myslím že by sa to dalo (asi zložitejšie) aj takto:

Kód: Vybrať všetko

string finalINT = System.Convert.ToString(zaokruhleneCislo);
finalINT = finalINT.Remove(kdezacat); //kdezacat = tu myslim 2
Console.WriteLine(finalINT);
Samozrejme niekde som čítal, že Substring je rýchlejší...
refr0
Star
Star
Príspevky: 521
Registrovaný: 26 nov 2005, 10:55
Bydlisko: Trenčín
Kontaktovať používateľa:

Re: zaokruhlovanie v C#

Príspevok od používateľa refr0 »

double num = 2.500000000;
string strNum = num.ToString("F2"); // 2.50

:)
axxis
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3690
Registrovaný: 29 máj 2007, 21:53
Bydlisko: Spálené mlyny
Kontaktovať používateľa:

Re: zaokruhlovanie v C#

Príspevok od používateľa axxis »

nebude to nahodou fungovat tak, ze to proste odtrhne cast cisla za druhou cislicou bez zaokruhlenia?
harrison314
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 8223
Registrovaný: 27 máj 2009, 20:42
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: zaokruhlovanie v C#

Príspevok od používateľa harrison314 »

bude, takto to dopadne ked chcete riesit trivialny vypis 500 riadkovym kodom, cela veda je

Kód: Vybrať všetko

double n = 547.45872;
string str = string.format("{0:00.00}",Math.Round(n,2));
//alebo
Console.WriteLine("{0:00.00}",Math.Round(n,2));
Napísať odpoveď