Quick Tip: 05. waliduj dane w formacie w jakim je wyświetlasz

Często dane, które posiadamy musimy odpowiednio sformatować przed ich wyświetleniem.
Jeżeli takie dane musimy zwalidować, to warto zadbać, aby walidowane dane były  w takim samym formacie jak je wyświetlamy.

Prosty przykład:

Powiedzmy, że mamy metodę pobierającą kwotę faktury:


var invoiceBalance = GetInvoiceBalance();

Kwotę tą otrzymujemy z dokładnością do 4 miejsc po przecinku.
Jednak przez wyświetleniem formatujemy ją:


litInvoiceBalance.Text = invoiceBalance.ToString("C");

Co w wyświetli nam np. 100,00 zł.
Jak widać nasza zmienna wyświetlana jest z dokładnością do 2 miejsc po przecinku.

Dodatkowo załóżmy, że jeżeli pobrana kwota jest większa od 0, umożliwimy użytkownikowi zaznaczenie RadioButton’a, czyli:


if (invoiceBalance > 0)
{
   rbMakePayment.Enabled = true;
}

Niby wszystko ok – aplikacja działa. Jeśli kwota jest większa od 0 możemy zaznaczyć RadioButton’a, a jeśli nie to nie możemy.

Problem pojawi się w sytuacji, kiedy nasza procedura zwróci np. 0,0010.
Co wówczas zrobi nasz program? Wyświetli 0,00 zł, ale jednocześnie pozwoli zaznaczyć RadioButton’a :(
Dzieje się tak, ponieważ 0,0010 zaokrąglone do dwóch miejsc po przecinku da nam 0,00, ale podczas walidowania kwota jest większa od zera.

Tego typu błędy są czasami ciężkie do wykrycia – kompilator nic nie zgłosi, a i sam błąd występuje rzadko.

Rozwiązaniem w tym przypadku jest zaokrąglenie naszej kwoty przed wyświetleniem i zwalidowaniem, czyli:

var invoiceBalance = GetInvoiceBalance();

invoiceBalance = Math.Round(invoiceBalance, 2);

litInvoiceBalance.Text = invoiceBalance.ToString("C");

if (invoiceBalance > 0)
{
   rbMakePayment.Enabled = true;
}

Warto zwrócić uwagę na takie sytuacje.

2 Responses to “Quick Tip: 05. waliduj dane w formacie w jakim je wyświetlasz”

  1. dotnetomaniak.pl Says:

    Quick Tip: 05. waliduj dane w formacie w jakim je wyświetlasz | Łukasz Gąsior – Blog…

    Dziękujemy za publikację – Trackback z dotnetomaniak.pl…


  2. dotnetomaniak.pl Says:

    waliduj dane w formacie w jakim je wyświetlasz…

    Dziękujemy za publikację – Trackback z dotnetomaniak.pl…


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>