Jak ominac zaokraglanie liczb zmienno przecinkowych przez JS?

Odpowiedz Nowy wątek
2019-06-04 12:04
0

Witam,

Przypisuje wartosci zmiennych z PHP do JS. Wszystko w JSONie.


var orderJson = <tal:block content="structure php: json_encode(order)"/>;

Cena zamowienia to np 5.00, 10.49 albo 50.40 itd. Cena zamowienia zawsze jest typu float z dwoma miejscami po przecinku.

Zakazdym razem JS zaokragla 5.00 do 5, 50.40 do 50.4. Dlaczego tak sie dzieje? Jak to ominac?

Przypisane wartosci do orderJson wysylam od razu przez SDK i wszystkie ceny maja byc typu float z dwoma miejscami po przecinku. Nie moge wyslas stringa. JS musi jest madrzejsze i musi zrobic swoje.

Jakies pomysly?

edytowany 1x, ostatnio: poniatowski, 2019-06-04 12:05

Pozostało 580 znaków

2019-06-04 15:09
0

Jak pisalem wysylam dane przez SDK do zewnetrzenego serwera - CRMa. Tak jak byc wysylal dane przez API w backendzie. Chodzi o to ze cena zamowienia bedzie uzywana np do obliczen statystyk czyli wykonywane beda na niej mnozenie, dzielenie, dodawanie itd. Wiec nie moze to byc string. Druga sprawa, ze ta sama zmienna bedzie uzyta do wyslania email do klienta. A w emailu chce wyswietlic 10.50 a nie 10.5. Zapytalem ludzi z saportu czy oni moga to zaokraglic do dwoch miejsc po przeciku. I napisali, ze nie moga, ze to moj problem.

Pozostało 580 znaków

2019-06-04 15:16
2

Popieram @mr_jaro - jeśli potrzebujesz tego jako string do wyświetlenia, to masz przynajmniej dwa sposoby (podany przeze mnie oraz Jaro), jeśli chcesz to przetwarzać jako wartość numeryczną to nie ma znaczenia, ile jest miejsc po przecinku. Może jak wyjaśnisz, co konkretnie kombinujesz i co chcesz osiągnąć, łatwiej będzie coś doradzić.

EDIT - widzę, że się minęliśmy z odpowiedziami i Twoja się pojawiła w chwili, w której pisałem swojego posta.
W takim razie chyba najsensowniej będzie Ci to trzymać jako float i w tej postaci przekazywać/odbierać do CRm, a podczas wyświetlania użytkownikowi skorzystaj z podanych przez nas sposobów formatowania.


That game of life is hard to play
I'm gonna lose it anyway
The losing card I'll someday lay
So this is all I have to say
edytowany 1x, ostatnio: cerrato, 2019-06-04 15:17

Pozostało 580 znaków

2019-06-04 15:28
0

@cerrato: I to jest wlasnie problem, bo ja nie mam zupelnie wplywu na to co sie dzieje po stronie CRMa. My placimy za niego i nie mamy dostepu. Chyba zrobie tak, ze bede wysylal dwie zmienne przez SDK.

order_price_float = 15.0;
order_price_string = "15.00";

Jedna bedzie uzyta do obliczen a druga do wyswietlania w xHTMLu. Ok, dzieki chlopaki. Doceniam i pozdrawiam.

Pozostało 580 znaków

2019-06-04 15:28
1

wysyłasz floata, obliczasz floatem a dopiero przy generowaniu maila powinno być zrobione formatowanie. Czyli trzeba poprawić templatkę maila. Tyle. Tak się to robi, bo innego wyjścia nie ma a i to jedyne logiczne rozwiązanie.

Pozostało 580 znaków

2019-06-04 15:30
0

@mr_jaro: Zgadzam sie w 100% z Toba. Ale nie mam dostepu do CRM. My tworzymy templatki, ale CRM nie ma zadnego swojego jezyka do szablownow. Jedyne co maja to:

[%if(order_price>0)%]
[%else%]
[%endif%]

i samo wyswietlanie atrybutow z API

[%order_price%] zlotych

Nic wiecej. Nie ma czegos takeigo jak |format(2) czy nawet petli. A kosztuje w pizdu.

edytowany 1x, ostatnio: poniatowski, 2019-06-04 15:33

Pozostało 580 znaków

2019-06-04 15:35
1

i nie przejdzie coś takiego

[number_format(%order_price%, 2)] zlotych

Jakbyśmy wiedzieli jaki system templatek jest użyty to by się to ogarnęło,teraz strzelam.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0