Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mnożenie liczb
Forum PHP.pl > Inne > Hydepark
Noddie
Witam

pytanie może i trywialne ale...

chodzi o to, że mnożąc dwie liczby
105.6785 * 85368.00

1. w excelu
wynik: 90 216,44

2. w php
wynik: 9021562.188

Czy Wiecie czemu tak się dzieje? Przerabiam formularz z excela na formularz w php jednak mam problem z otrzymaniem tych samych wyników.
Czy da się doprowadzić do takiej sytuacji kiedy wyniki bedą się zgadzały co do joty? Proszę o odpowiedź sprawa jest dosyć pilna.
Z góry dziękuję za wszelką pomoc

pozdrawiam
noddie
Kisiol_Ent
Nie wiem czy to cos pomoze ale moze nakieruje tok myslowy tongue.gif


------========-----
z: http://rudy.mif.pg.gda.pl/~bogdro/linux/linux05.html
Typy danych

Zanim zaczniemy cokolwiek robić, trzeba wiedzieć, na czym ten cały koprocesor operuje.
Oprócz liczb całkowitych, FPU operuje na liczbach ułamkowych różnej precyzji:

Pojedyncza precyzja. Liczby takie zajmują po 32 bity (4 bajty) i ich wartość maksymalna wynosi ok. 1039 (10^39). Znane są programistom języka C jako "float".

Podwójna precyzja. 64 bity (8 bajtów), max = ok. 10409 (10^409). W języku C są znane jako "double"

Rozszerzona precyzja. 80 bitów (10 bajtów), max = ok. 104930 (10^4930). W języku C są to "long double"

Jak widać, ilości bitów są oczywiście skończone. Więc nie każdą liczbę rzeczywistą da się dokładnie zapisać w postaci binarnej. Na przykład, jedna dziesiąta (0.1) zapisana dwójkowo jest ułamkiem nieskończonym okresowym! Poza tym, to, czego nas uczyli na matematyce, np. oczywista równość: a+(b-a)=b nie musi być prawdą w świecie ułamków w procesorze ze względu na brak precyzji!

---====--

wiec se tak mysle z ten Excel dobrze liczy bo to program w koncu do liczenia
a php nie, wiec tu by byla jakas specjalna biblioteka potrzebna do liczb, ale ja sie na tym nieznam o0
Sedziwoj
Cytat(Noddie @ 13.09.2007, 23:50:19 ) *
chodzi o to, że mnożąc dwie liczby
105.6785 * 85368.00
1. w excelu
wynik: 90 216,44
2. w php
wynik: 9021562.188


No i php dobrze liczy, chyba sobie gdzieś przecinek przesunąłeś.

A tak swoją drogą co to ma wspólnego z OOP?
Noddie
witam

Dziekuje za próbę pomocy:).
Do "Sedziwoj" niestety u mnie excel i php nie pokazuja tych samych wynikow. Sprawdzałem u siebie kalukatorem z windowsa i wynik z klalulatora zgadza sie z wynikiem z php. Pracuje na laptopie amilo pro fujitsu siemens v2055. Czyzby procesor? Czy znacie może jakieś biblioteki do php do pracy na liczbach, które mogłby teoretycznie pomóc? Prosze o odpowiedź.

pozdrawiam
noddie
Sedziwoj
@Noddie
Mnożenie to mnożenie, nie może dawać różnych wyników w zależności od programu. Chyba że Excel ma źle zaimplemenotwane mnożenie, ale stawiam że jest coś czego nie bierzesz pod uwagę. Mi w OpenOffice dobrze mnoży. Przepisz te liczby do nowego arkusza i je wymnóż, zapewne da wynik taki jak w PHP.
Noddie
@Sedziwoj

masz racje open office daje ten sam wynik. To czemu MS Office 2003 (excel) liczy inaczej? Jeżeli ktoś ma jakąś koncepcje dlaczego tak się dzieje niech się podzieli.

pozdrawiam
noddie
Sedziwoj
@Noddie
A sprawdziłeś w M. Office tak ja mówiłem w nowiutkim dokumencie i _z_palca_ wpisanymi wartościami oraz formułą?
Noddie
@Sedziwoj

w nowym ms excel wynik zgadza się. Jednak w dalszym ciągu nie wiem dlaczego gdy uruchomie dokument excel w, którym jest formularz i wprowdze dane wyniki mi sie nie zgadzają. Sprawdzałem i nie ma tam zastosowanych żadnych funkcji formatujących dane wyjściowe.


pozdrawiam
noddie
Sedziwoj
Sprawa sprowadza się do Excela, a w tym już Ci nie pomogę.
Bo jest to liczone inaczej niż proste mnożenia, musi coś jeszcze być robione i jak chcesz aby to powtórzyć w PHP musisz to znaleźć.
Kisiol_Ent
W exelu i php jest to samo, cos tu z tym arkuszem masz zryte o0
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.