Mam pole tekstowe z ciągiem waluty , który następnie muszę przekonwertować na ciąg znaków podwójny, aby wykonać na nim niektóre operacje.
"$1,100.00"
→ 1100.00
Musi to nastąpić po stronie klienta. Nie mam wyboru, jak pozostawić ciąg waluty jako ciąg waluty jako dane wejściowe, ale muszę rzucić / przekonwertować go na podwójny, aby umożliwić pewne operacje matematyczne.
javascript
jquery
Bobby Borszich
źródło
źródło
.00
spływ. W przeciwnym razie prawidłowe przedstawienie waluty, takie jak „1100 $” i „1100 $”. zostaną zmniejszone o dwa rzędy wielkości.Księgowość.js jest właściwą drogą. Użyłem go w projekcie i miałem bardzo dobre doświadczenia z nim związane.
Możesz go znaleźć na GitHub
źródło
Użyj wyrażenia regularnego, aby usunąć formatowanie (dolar i przecinek), i użyj parseFloat, aby przekonwertować ciąg na liczbę zmiennoprzecinkową.`
źródło
Wiem, że to stare pytanie, ale chciałem dać dodatkową opcję.
JQuery Globalize umożliwia parsowanie formatu specyficznego dla kultury na zmiennoprzecinkowe.
https://github.com/jquery/globalize
Biorąc pod uwagę ciąg „13 042,00 $” i Globalizuj ustawiono na en-US:
Możesz parsować wartość zmiennoprzecinkową w następujący sposób:
To da ci:
I pozwala pracować z innymi kulturami.
źródło
Wiem, że to stare pytanie, ale odpowiedź CMS wydaje się mieć jedną drobną wadę: działa tylko wtedy, gdy format waluty używa „.” jako separator dziesiętny. Na przykład, jeśli chcesz pracować z rosyjskimi rublami, łańcuch będzie wyglądał następująco: „1 000,00 rub.”
Moje rozwiązanie jest znacznie mniej eleganckie niż CMS, ale powinno wystarczyć.
Założenia:
Wyrażenie regularne może obsłużyć nawet coś w rodzaju „1,999 dolarów i 99 centów”, chociaż nie jest to zamierzona funkcja i nie należy na niej polegać.
Mam nadzieję, że to komuś pomoże.
źródło
Ten przykład działa poprawnie
http://jsbin.com/ecAviVOV/2/edit
źródło
// „10.000.500,61 TL” cena_do_numeru => 10000500.61
// „10000500.62” number_to_price => 10.000.500,62
JS FIDDLE: https://jsfiddle.net/Limitlessisa/oxhgd32c/
źródło
Wiem, że znalazłeś rozwiązanie swojego pytania, chciałem tylko polecić, abyś spojrzał na następującą, bardziej rozbudowaną wtyczkę jQuery dla międzynarodowych formatów liczb:
International Formater Number
źródło
To moja funkcja. Działa ze wszystkimi walutami ..
Zastosowanie:
toFloat("$1,100.00")
lubtoFloat("1,100.00$")
źródło
Możesz tego spróbować
źródło
dane wyjściowe to: Rs. 39,00
źródło
Przetestowałem powyżej trzech symboli walutowych. Możesz to zrobić także dla innych.
Powyższe wyrażenie regularne usunie wszystko, co nie jest cyfrą ani kropką, więc ciąg znaków można uzyskać bez symbolu waluty, ale w przypadku „150,00 Fr”, jeśli pocieszysz dane wyjściowe, otrzymasz cenę jako
co jest złe, więc sprawdź indeks „.” następnie podziel to i uzyskaj odpowiedni wynik.
źródło
źródło
źródło
Ta funkcja powinna działać niezależnie od ustawień regionalnych i walutowych:
Zakłada się, że znasz znak kropki dziesiętnej (w moim przypadku ustawienia regionalne są ustawiane z PHP, więc rozumiem to
<?php echo cms_function_to_get_decimal_point(); ?>
).źródło
To zadziałało dla mnie i obejmuje większość skrzynek :)
źródło