Thread View: alt.pl.comp.lang.csharp
6 messages
6 total messages
Started by Kuba
Mon, 01 Aug 2011 19:14
zaokrąglenie
Author: Kuba
Date: Mon, 01 Aug 2011 19:14
Date: Mon, 01 Aug 2011 19:14
20 lines
1545 bytes
1545 bytes
Witam, przepisuję sobie dane z z pliku CSV (przy pomocy split, separator ","), zamieniam w polu kwota "." na "," i wrzucam do dataGridView dataGridView1.Rows[ licznik].Cells[ licznik_kolumn + 1].Value = Double.Parse( pole.Replace( '.', ',')); później sumuję w pętli wartości dla kolumny kwota Double.Parse( dataGridView1.Rows[i].Cells["kwota"].Value.ToString()) i wychodzi różnica groszowa np. 54628423,9200019 a jak przesortuję wg innej kolumny to 54628423,9200006, itd. (Excel robi dokładnie to samo !!!) o co tu chodzi? (wszystkie poszczególne liczby mają dwa istotne miejsca po przecinku - sprawdziłem w Excelu 9 miejsc). pozycji jest ok 42 000. POMOCY - pozdrawiam
Re: zaokrąglenie
Author: Maciej Pilichowski
Date: Tue, 02 Aug 2011 04:28
Date: Tue, 02 Aug 2011 04:28
33 lines
2032 bytes
2032 bytes
On Mon, 1 Aug 2011 21:14:20 +0200, "Kuba" <kuba320@wp.pl> wrote: >zamieniam w polu kwota "." na "," i To zle robisz. Konwertuj na znak wg ustawien systemowych. >wrzucam do dataGridView >dataGridView1.Rows[ licznik].Cells[ licznik_kolumn + 1].Value = >Double.Parse( pole.Replace( '.', ',')); To robisz nie najlepiej. Wrzuc to sobie do tablicy double, a grida zbinduj z tymi danymi. >póĽniej sumuję w pętli warto¶ci dla kolumny kwota Double.Parse( >dataGridView1.Rows[i].Cells["kwota"].Value.ToString()) > >i wychodzi różnica groszowa np. 54628423,9200019 Roznica groszowa na czym? Ze matematycznie jak posumujesz wartosci, ktore widzisz, to dostajesz jedno, a suma komputerowa daje drugie? Uzyj nie double, a decimal. >o co tu chodzi? Reprezentacje liczb w komputerze. Cos co Ty widzisz jako 4.20 jest tekstem, zeby przeksztalcic to na liczbe czesto konieczne jest zaokraglenie do np. 4.1998 -- komputer bowiem nie pracuje w systemie dziesietnym i dla niego 10 to nie jest "rowna" liczba, a 16. milego dnia, hej -- Moja wyprzedaz wszystkiego: ksiazki, plyty, filmy. http://www.garaz.pol.pl/
Re: zaokrąglenie
Author: Piotr Stęclik
Date: Wed, 03 Aug 2011 05:38
Date: Wed, 03 Aug 2011 05:38
12 lines
1707 bytes
1707 bytes
Jak powiedział Morfeusz "Witaj w prawdziwym świecie". Liczby zmiennoprzecinkowe (double) są przechowywane w sposób niedokładny i stąd operacje na nich mają inne cechy niż poznana na lekcjach matematyki arytmetyka. Problem, z którym masz do czynienia to łączność dodawania: prawo to nie działa (czytaj może nie działać) na doublach. Krótko mówiąc czasami (a+b)+c != a+(b+c) Wikipedia rozwieje resztę Twoich wątpliwości http://pl.wikipedia.org/wiki/Liczba_zmiennoprzecinkowa
Re: zaokrąglenie
Author: yamma
Date: Wed, 03 Aug 2011 07:01
Date: Wed, 03 Aug 2011 07:01
10 lines
1293 bytes
1293 bytes
Kuba wrote: > później sumuję w pętli wartości dla kolumny kwota Double.Parse( > dataGridView1.Rows[i].Cells["kwota"].Value.ToString()) Odpal sobie Worda, ustaw czcionkę na, powiedzmy, jakieś 40 pkt i wklep następujący tekst: "NIGDY NIE BĘDĘ UŻYWAŁ TYPÓW ZMIENNOPRZECINKOWYCH DO PRZECHOWYWANIA DANYCH FINANSOWYCH". Potem to wydrukuj i powieś sobie na ścianie. yamma
Re: zaokrąglenie
Author: Paweł Kierski
Date: Wed, 03 Aug 2011 09:06
Date: Wed, 03 Aug 2011 09:06
27 lines
2014 bytes
2014 bytes
W dniu 2011-08-03 09:01, yamma pisze:
> Kuba wrote:
>
>> później sumuję w pętli wartości dla kolumny kwota Double.Parse(
>> dataGridView1.Rows[i].Cells["kwota"].Value.ToString())
>
> Odpal sobie Worda, ustaw czcionkę na, powiedzmy, jakieś 40 pkt i wklep
> następujący tekst: "NIGDY NIE BĘDĘ UŻYWAŁ TYPÓW ZMIENNOPRZECINKOWYCH DO
> PRZECHOWYWANIA DANYCH FINANSOWYCH". Potem to wydrukuj i powieś sobie na
> ścianie.
Teraz wyrzuć tę kartkę i zrób drugą:
"NIGDY NIE BĘDĘ UŻYWAŁ W OBLICZENIACH FINANSOWYCH TYPÓW
ZMIENNOPRZECINKOWYCH O PODSTAWIE INNEJ, NIŻ UŻYWANA W TYCH FINANSACH".
Zmiennoprzecinkowe mogą być OK, byle miały podstawę taką, jak
"w papierach" (zwykle - 10) i miały kontrolę nad zaokrągleniami.
W końcu kwoty też się kiedyś zaokrągla - w określony sposób. 2123,47zł
na 6.43% w stosunku rocznym z dzienną kapitalizacją szybko będzie miało
duuużo cyfr znaczących.
Ważne, żeby reprezentacja i operacje były spójna z obliczeniami
wykonywanymi "na kartce".
--
Paweł Kierski
news@pkierski.net
Re: zaokrąglenie
Author: Kuba
Date: Wed, 03 Aug 2011 18:56
Date: Wed, 03 Aug 2011 18:56
5 lines
1120 bytes
1120 bytes
Kończąc wątek, bardzo dziękuję za mniej lub bardziej zgryźliwe, jednak dla mnie bardzo pouczające i ważne, uwagi oraz wskazówki. Pamiętacie? Początki są ciężkie... pozdrawiam Kuba
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads