Thread View: alt.pl.comp.lang.csharp
8 messages
8 total messages
Started by Zeus
Tue, 01 Jun 2010 09:52
Problem z dokładnością double??
Author: Zeus
Date: Tue, 01 Jun 2010 09:52
Date: Tue, 01 Jun 2010 09:52
23 lines
1462 bytes
1462 bytes
public double modf(double pb, ref double intbase)
{
intbase = (double)((int)(pb));
Console.WriteLine("modf wewint = {0:F10} ", intbase);
double x = pb - intbase;
Console.WriteLine("modf wew = {0} ", x );
return pb - intbase;
}
double ibase, we = 8893.897645320;
double wy = modf(we, ibase);
Dostaję:
modf wewint = 8893.0000000000
modf wew = 0.897645319999356
wy = 0.897645319999356
a powinno być wy = 0.897645320 dla mnie ta niedokładność jest znacząca.
Teoretycznie double ma dokładność do 15 miejsca a tu takie numery już na
8. Co jest grane, piszesz double a on myśli float?
Co zrobić z fantem?. Czy tu bez obaw da się coś policzyć gdy muszę
sprawdzać wynik każdego działania?
Re: Problem z dokładnością double??
Author: Zeus
Date: Tue, 01 Jun 2010 11:43
Date: Tue, 01 Jun 2010 11:43
13 lines
1246 bytes
1246 bytes
> double we = 8893.897645320; Na podglądzie w programie: we 8893.8976453199994 double Taka wartość to może mi milimetry zamienić na metry o co tu chodzi z tym double, zdarzały się błędy przy liczeniu ale żeby z podstawieniem takie problemy? Jak zaradzić? Bo dla mnie jest to zupełnie nie zrozumiałe i nie do przyjęcia. A może trzeba użyć jakiegoś zamiennika double. Pozdrawiam S.Z.
Re: Problem z dokładnością double??
Author: Wiktor Zychla
Date: Tue, 01 Jun 2010 11:55
Date: Tue, 01 Jun 2010 11:55
3 lines
1353 bytes
1353 bytes
> zamiennika double. System.Decimal
Re: Problem z dokładnością double??
Author: spammtrapp
Date: Tue, 01 Jun 2010 11:56
Date: Tue, 01 Jun 2010 11:56
5 lines
1081 bytes
1081 bytes
W dniu 2010-06-01 11:52, Zeus pisze: > Co zrobić z fantem?. Czy tu bez obaw da się coś policzyć gdy muszę > sprawdzać wynik każdego działania? A na decimalu tego nie mozesz zrobic?
Re: Problem z dokładnością double??
Author: Zeus
Date: Tue, 01 Jun 2010 12:46
Date: Tue, 01 Jun 2010 12:46
10 lines
1178 bytes
1178 bytes
> System.Decimal Zamieniłem działa chociaż nadal nie wiem o co chodzi z double, że takie szopki odstawia. Wygląda na to, że w całym programie będę musiał pozamieniać na Decimal. Ciężko zmienić przyzwyczajenia. Dzięki Pozdrawiam S.Z.
Re: Problem z dokładnością double??
Author: Robert Winkler
Date: Wed, 02 Jun 2010 06:50
Date: Wed, 02 Jun 2010 06:50
16 lines
1438 bytes
1438 bytes
>> double we = 8893.897645320;
>
> Na podglądzie w programie:
> we 8893.8976453199994 double
> Taka wartość to może mi milimetry zamienić na metry
Witaj,
Jakiego środowiska i kompilatora używasz?
Uruchomiłem właśnie u siebie coś takiego:
double we = 8893.897645320;
Debug.WriteLine(string.Format("{0:F20}", we));
i jako wynik otrzymałem:
8893,89764532000000000000
____
Robert Winkler
Re: Problem z dokładnością double??
Author: Marcin Kral
Date: Wed, 02 Jun 2010 09:16
Date: Wed, 02 Jun 2010 09:16
19 lines
1580 bytes
1580 bytes
W dniu 2010-06-01 13:43, Zeus pisze: >> double we = 8893.897645320; > > Na podglądzie w programie: > we 8893.8976453199994 double > Taka wartość to może mi milimetry zamienić na metry > > o co tu chodzi z tym double, zdarzały się błędy przy liczeniu ale żeby z > podstawieniem takie problemy? Jak zaradzić? Bo dla mnie jest to zupełnie > nie zrozumiałe i nie do przyjęcia. A może trzeba użyć jakiegoś > zamiennika double. Niektore wartosci sa niereprezentowalne w typie double. Poczytaj np. tutaj: http://groups.google.pl/group/pl.comp.lang.c/msg/1a19f148393c4e7f -- Pozdrawiam Marcin Kral
Re: Problem z dokładnością double??
Author: Zeus
Date: Wed, 02 Jun 2010 17:49
Date: Wed, 02 Jun 2010 17:49
6 lines
983 bytes
983 bytes
> Jakiego środowiska i kompilatora używasz? MS VC2008 express C++ i C# Pozdrawiam S.Z.
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