Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 7 ] 
AutorSpráva
Offline

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

Registrovaný: 10.09.08
Prihlásený: 19.04.22
Príspevky: 126
Témy: 22
Bydlisko: Bratislava
Príspevok NapísalOffline : 01.02.2015 17:58

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: 13348
Témy: 1496
Bydlisko: Bratislava
Príspevok NapísalOffline : 01.02.2015 18:00

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







_________________
Streacom DA2 | SilverStone Titanium SX800-LTI 800W | ASRock X299E-ITX/ac | Intel Core i9-9980XE & be quiet! Dark Rock TF | Kingston HyperX Impact 64 GB DDR4 2666 MHz | NVIDIA Titan RTX 24 GB | Intel SSD Optane 905P 480 GB NVMe U.2 & Intel SSD 750 1,2 TB NVMe U.2 & Intel SSD 660p 2 TB NVMe M.2 & Seagate BackUp Plus Portable 56 TB USB | 55" 4K OLED Dell Alienware AW5520QF & 24" LCD EIZO FlexScan EV2451 | Ergotron LX Wall Mount Keyboard Arm | Logitech Craft | Logitech G603 | Logitech F710 | Harman Kardon Sabre SB 35 & Sennheiser RS 175 | Microsoft Windows 7 Ultimate | APC Back-UPS ES 700 | Lenovo ThinkPad X250 | iPhone X 256 GB & Pitaka Aramid | SilverStone ML05B Milo | Corsair SF600 SFX 600W | ASRock X99E-ITX/ac | Intel Xeon E5-2683 v4 & NOCTUA NH-L12S | Kingston HyperX Savage 32 GB DDR4 2400 MHz | NVIDIA GeForce GT 710 1 GB | Intel SSD Optane Memory 32 GB NVMe M.2 & Intel SSD 730 240 GB SATA | Ubuntu Server
Offline

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

Registrovaný: 10.09.08
Prihlásený: 19.04.22
Príspevky: 126
Témy: 22
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 01.02.2015 18:08

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: 12449
Témy: 39
Príspevok NapísalOffline : 01.02.2015 18:28

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ý: 19.04.22
Príspevky: 126
Témy: 22
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 01.02.2015 18:41

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);


Offline

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

Registrovaný: 28.02.11
Prihlásený: 23.04.24
Príspevky: 197
Témy: 6
Bydlisko: Bratislava
Príspevok NapísalOffline : 01.02.2015 19:03

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ý: 19.04.22
Príspevky: 126
Témy: 22
Bydlisko: Bratislava
Príspevok Napísal autor témyOffline : 01.02.2015 19:38

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.


Odpovedať na tému [ Príspevkov: 7 ] 


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

786

08.02.2007 18:40

XPM Zobrazenie posledných príspevkov

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

371

03.08.2011 14:32

shiro Zobrazenie posledných príspevkov

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

450

09.01.2014 18:52

shiro Zobrazenie posledných príspevkov

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

v Ostatné

20

1123

02.08.2008 23:07

rooobertek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP: Kodovanie pri vytvarani .csv

v PHP, ASP

2

609

22.08.2011 10:36

camo Zobrazenie posledných príspevkov

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

v Benchmarky a diagnostické programy

9

929

25.02.2008 0:07

gadgetsk Zobrazenie posledných príspevkov

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

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

2

347

25.10.2014 10:37

dany2281995 Zobrazenie posledných príspevkov

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

v PHP, ASP

2

380

31.01.2011 11:00

davider137 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Čakanie na výsledok

v JavaScript, VBScript, Ajax

9

634

28.12.2010 17:05

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. PHP Progress Bar pri importovani do MySQL

v PHP, ASP

3

440

19.07.2010 9:45

coldak Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. opatovne vykonanie php pri stlaceni tlacidla spat

v PHP, ASP

4

509

29.12.2012 18:50

boyindoor Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. problem s $_GET pri nacitani index.php

v PHP, ASP

2

985

30.01.2010 23:59

roko146 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Znizenie zatazenia servera pri stahovani (php/asp)

v PHP, ASP

5

511

22.02.2008 15:36

emer Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. HD Tune výsledok - Otázka

v Ostatné programy

8

572

20.06.2017 20:21

michalesku Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. ako som dostal výsledok?

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

4

595

12.01.2009 16:38

tlacitko Enter Zobrazenie posledných príspevkov

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

v PHP, ASP

6

466

14.12.2010 17:05

Feko Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra