Formát čísla-jak zabránit zaokrouhlení   zodpovězená otázka

VB.NET, .NET

Zdravím, potřeboval bych poradit ohledně formátování čísel.

Mám proměnnou typu double kterou načítám z databáze a která je zaokrouhlena na 5 desetinných míst. V aplikaci potřebuju počítat s 5 desetinnými místy, ale při prezentaci dat uživateli chci zobrazit kvůli přehlednosti pouze 2 desetinná místa jako měnu. A zde je trošku problém.

Pokud použiju toto:

Dim castka as Double

Format(castka, "C2")

Částka se zaokrouhlí na 2 desetinná místa a zobrazí se jako měna. Já bych ale potřeboval aby se zaokrouhlení neprovedlo, aby se pouze přebytečná desetinná čísla odřízla . Je to jeden z případů kdy je .Net až moc chytrý:)

Jediné co mě napadlo je převést číslo na string, najít desetinný oddělovač, odříznout přebytečná čísla a nalepit nakonec značku pro koruny. To bych viděl ale až jako uplně krajní možnost.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Možná je na to nějaké slešl přetížení funkce Math.Floor (jako třeba počet desetinných míst), ale pokud by nebylo, pak můžete udělat tohle:

- vynásobit stem

- zaokrouhlit dolů přes Math.Floor

- vydělit stem

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To je častá chyba, používejte Truncate místo Floor.

Pokud je číslo pozitivní, zaokrouhlují oba stejně (například 4.5 na 4), ale negativní čísla Floor zaokrouhluje na druhou stranu (například -4.5 na -5) oproti Truncate (-4.5 na -4).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

No záleží na tom, jak se to u záporných má chovat. I když v tomto konkrétním případě asi bude lepší ten Truncate.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

To ano, ale obecně je v povědomí spíš funkce Floor, která může zapříčinit problémy. Dokonce jsem viděl i rozšíření této funkce, aby se chovala jako Truncate.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tak to přetížení funkce jsem nenašel, takže jsem to vyřešil přes to vynásobení/vydělení. To mě nenapadlo a přitom to je tak jednoduchý. To je tak, když někdo chce něco za každou cenu vyřešit. Přemýšlí jen jak to složitě obejít a jednoduchá řešení nevidí:)

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback