[ Príspevkov: 7 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
Zlý výsledok pri násobení PHP

Registrovaný: 10.09.08
Prihlásený: 29.11.17
Príspevky: 126
Témy: 22 | 22
Bydlisko: Bratislava
NapísalOffline : 01.02.2015 17:58 | Zlý výsledok pri násobení PHP

Ahojte,
pripravujem jednu aplikáciu, kde pracujem s číslami (sumy v €). Pri ukladaní do DB násobím čísla zadané cez formulár hodnotou 100 (aby aj desatinné čísla boli ako v DB integer) a narazil som na jeden záhadný problém.
Ak niekto zadá do pola vo formulári číslo 555,55, PHP ho vynásobí *100 a výsledkom je 555,54, alebo pri 555,56 vráti 55555 a ja netuším prečo.
Ak skúsim iné číslo, napr. 666,55 vráti 66655. Neviete niekto čo je príčinou, príp. ako to ošetriť? Keďže aplikácia praruje so sumami, potrebujem aby boli výsledky presné...
Ďakujem za pomoc


Offline

Prevádzkovateľ fóra
Prevádzkovateľ fóra
Zlý výsledok pri násobení PHP

Registrovaný: 01.05.05
Príspevky: 12425
Témy: 1447 | 1447
Bydlisko: Bratislava
Vek: 32
NapísalOffline : 01.02.2015 18:00 | Zlý výsledok pri násobení PHP

co tak sem dat kod ktorym to spracuvavas a skor ti niekto poradi v com by mohol byt problem


_________________
SilverStone SST CS01 | Corsair SF600 600W SFX | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 (16 Cores / 32 Threads) & Noctua NH-U9DX i4 | Kingston HyperX Savage 32 GB DDR4 2400 MHz | PNY NVIDIA Quadro K1200 DP 4 GB DDR5 | Intel SSD 750 1.2 TB NVMe & Intel SSD 730 240 GB SATA & Seagate BackUp Plus Portable 12 TB USB | 31.5" 4K LCD EIZO FlexScan EV3237 & 2 x 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech Wireless G700s | Harman Kardon Nova | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 - Intel Core i7 5600U, 8 GB DDR3 1600 MHz, Intel HD Graphics 5500, SanDisk SSD 512 GB, 12.5 FHD LED IPS, WWAN 3G 4G LTE, Microsoft Windows 7 Ultimate | Nintendo Classic Mini | BlackBerry Passport 96 GB
Offline

Užívateľ
Užívateľ
Zlý výsledok pri násobení PHP

Registrovaný: 10.09.08
Prihlásený: 29.11.17
Príspevky: 126
Témy: 22 | 22
Bydlisko: Bratislava
Napísal autor témyOffline : 01.02.2015 18:08 | Zlý výsledok pri násobení PHP

Aj som chel, len som zabudol... Nejde o čisté PHP, požívam framework, ale ten výpočet je klasické PHP.
Kód:
   $sumaTemp =  floatval(str_replace(',', '.', str_replace(' ', '', $input->post->suma))); // input je text
   $suma = $sumaTemp * 100; // vynásobenie

        $produkt->suma = $suma;
        $produkt->save();


Offline

Správca fóra
Správca fóra
Zlý výsledok pri násobení PHP

Registrovaný: 08.08.09
Príspevky: 12516
Témy: 41 | 41
Bydlisko: Martin
NapísalOffline : 01.02.2015 18:28 | Zlý výsledok pri násobení PHP

1. Nejaký špeciálny dôvod, prečo do databázy neukladáš sumu ako decimal, resp. iný datový typ s podporou desatinnej bodky?
2. Keď si dáš vypísať obsah jednotlivých premenných ($sumaTemp, $suma, $input->post->suma) sú správne? Napríklad pri vstupe '555,55' je aký obsah jednotlivých premenných?


_________________
always is always wrong
Offline

Užívateľ
Užívateľ
Zlý výsledok pri násobení PHP

Registrovaný: 10.09.08
Prihlásený: 29.11.17
Príspevky: 126
Témy: 22 | 22
Bydlisko: Bratislava
Napísal autor témyOffline : 01.02.2015 18:41 | Zlý výsledok pri násobení PHP

Nuž, po uložení $suma do DB prebiehajú ďalšie výpočty (sčítavanie a odčítavanie), ktoré mi tiež hádzali divné sumy (napriek tomu, že čísla boli v DB uložené dobre). Na Stackoverflow som prešiel nikoľko postov a často tam bolo uvedené ako jedno z riešení ukladať sumy do DB ako int... Skúšal som čísla ukladať aj ako decimal, no napriek tomu boli výsledky nepresné a tak som skúsil ukladať sumy ako integer a fungovalo to až kým som nenarazil pri testovaní na tento problém.
Keď si nechám vypísať hodnoty z $input->post->suma a $sumaTemp, hodnota je OK. Až po násobení sa to domrví.

//EDIT
Skúsil som už vynásobenú hodnotu zaokrúhiť a zatiaľ to vracia správne hodnoty. Ešte to bedem testovať, tak snáď to už bude OK.
Kód:
$suma = round($sumaTemp * 100);


Online

Užívateľ
Užívateľ
Zlý výsledok pri násobení PHP

Registrovaný: 28.02.11
Prihlásený: 18.12.17
Príspevky: 178
Témy: 6 | 6
Bydlisko: Levice
Vek: 31
NapísalOnline : 01.02.2015 19:03 | Zlý výsledok pri násobení PHP

Na margo tvojho problému si prečítaj aspoň zbežne http://vtm.e15.cz/proc-pocitacum-delaji-problemy-desetinna-cisla


_________________
Neznalosť zložitých operácií necháva myseľ otvorenú pre geniálne riešenia založené na jednoduchosti.
Offline

Užívateľ
Užívateľ
Zlý výsledok pri násobení PHP

Registrovaný: 10.09.08
Prihlásený: 29.11.17
Príspevky: 126
Témy: 22 | 22
Bydlisko: Bratislava
Napísal autor témyOffline : 01.02.2015 19:38 | Zlý výsledok pri násobení PHP

K tejto problematike som si toho už prečítal dosť, takže viem, že to nie je o PHP, ale o tom že PC precuje s "jednotkami a nulami", ale riešenie na to zjavne existuje (aj kalkulačka to musí ošetrovať), ale ako som už napísal, v mojom prípade to (zatiaľ) vyriešilo zaokrúhľovanie.


 [ Príspevkov: 7 ] 


Zlý výsledok pri násobení PHP



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

zly obraz pri filmoch

v Video programy

1

535

08.02.2007 18:40

XPM

V tomto fóre nie sú ďalšie neprečítané témy.

zlý stav particií pri inštalácií

v Operačné systémy Microsoft

1

180

03.08.2011 14:32

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

zly hdd ? problem pri instalacii windowsu

v Pevné disky a radiče

5

193

09.01.2014 18:52

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

vyhoda linuxu pri php

v Ostatné

20

811

02.08.2008 23:07

rooobertek

V tomto fóre nie sú ďalšie neprečítané témy.

PHP: Kodovanie pri vytvarani .csv

v PHP, ASP

2

375

22.08.2011 10:36

camo

V tomto fóre nie sú ďalšie neprečítané témy.

Vysledok 3Dmarku06

v Benchmarky a diagnostické programy

9

697

25.02.2008 0:07

gadgetsk

V tomto fóre nie sú ďalšie neprečítané témy.

funkcia nerobí výsledok

v PHP, ASP

2

215

31.01.2011 11:00

davider137

V tomto fóre nie sú ďalšie neprečítané témy.

Funkcia return vysledok;

v Assembler, C, C++, Pascal, Java

2

162

25.10.2014 10:37

dany2281995

V tomto fóre nie sú ďalšie neprečítané témy.

Čakanie na výsledok

v JavaScript, VBScript, Ajax

9

358

28.12.2010 17:05

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

problem s $_GET pri nacitani index.php

v PHP, ASP

2

676

30.01.2010 23:59

roko146

V tomto fóre nie sú ďalšie neprečítané témy.

PHP Progress Bar pri importovani do MySQL

v PHP, ASP

3

217

19.07.2010 9:45

coldak

V tomto fóre nie sú ďalšie neprečítané témy.

opatovne vykonanie php pri stlaceni tlacidla spat

v PHP, ASP

4

155

29.12.2012 18:50

boyindoor

V tomto fóre nie sú ďalšie neprečítané témy.

Znizenie zatazenia servera pri stahovani (php/asp)

v PHP, ASP

5

323

22.02.2008 15:36

emer

V tomto fóre nie sú ďalšie neprečítané témy.

HD Tune výsledok - Otázka

v Ostatné programy

8

162

20.06.2017 20:21

michalesku

V tomto fóre nie sú ďalšie neprečítané témy.

vysledok google vyhladavania, vysvetlenie

v Internetový marketing, SEO, reklama

3

479

23.03.2010 17:15

citizen

V tomto fóre nie sú ďalšie neprečítané témy.

vysledok gettype stale string

v PHP, ASP

6

261

14.12.2010 17:05

Feko



© 2005 - 2017 PCforum, edited by JanoF