🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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??
#21534
Author: Zeus
Date: Tue, 01 Jun 2010 09:52
23 lines
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??
#21535
Author: Zeus
Date: Tue, 01 Jun 2010 11:43
13 lines
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??
#21536
Author: Wiktor Zychla
Date: Tue, 01 Jun 2010 11:55
3 lines
1353 bytes
> zamiennika double.

System.Decimal 
Re: Problem z dokładnością double??
#21541
Author: spammtrapp
Date: Tue, 01 Jun 2010 11:56
5 lines
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??
#21537
Author: Zeus
Date: Tue, 01 Jun 2010 12:46
10 lines
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??
#21538
Author: Robert Winkler
Date: Wed, 02 Jun 2010 06:50
16 lines
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??
#21540
Author: Marcin Kral
Date: Wed, 02 Jun 2010 09:16
19 lines
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??
#21539
Author: Zeus
Date: Wed, 02 Jun 2010 17:49
6 lines
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