Mam dwa ciągi zawierające tylko liczby:
var num1 = '20',
num2 = '30.5';
Spodziewałbym się, że mógłbym je dodać do siebie, ale zamiast tego są one łączone:
num1 + num2; // = '2030.5'
Jak mogę wymusić traktowanie tych ciągów jako liczb?
javascript
Andrzej
źródło
źródło
Dokumentacja MDN dla parseInt Dokumentacja
MDN dla parseFloat
W parseInt podstawa jest określana jako dziesięć, więc mamy podstawę 10. W javascript typu nonstrict liczba poprzedzona znakiem
0
jest traktowana jako ósemkowa. To oczywiście spowodowałoby problemy!Zobacz także odpowiedź ChaosPandion, aby uzyskać przydatny skrót używający jednoargumentowego operatora . Ustawiłem skrzypce, aby pokazać różne zachowania.
http://jsfiddle.net/EtX6G/
źródło
+num1 + +num2
jest krótszy, prawdopodobnie bardziej elegancki. Zasadniczo+
operator jednoargumentowy konwertuje naNumber
Zalecałbym użycie jednoargumentowego operatora plus, aby wymusić traktowanie ostatecznego ciągu jako liczby, w nawiasach, aby kod był bardziej czytelny, jak poniżej:
Więc w twoim przypadku jest to:
źródło
źródło
przekonwertować ciągi na
floats
withparseFloat(string)
lub tointegers
withparseInt(string)
źródło
parseInt(string, 10)
zobacz developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/ ...Jeśli chcesz dodać do siebie dwa ciągi, które są bardzo dużymi liczbami, musisz obliczyć dodawanie w każdej pozycji ciągu:
źródło
Możesz tego użyć, aby dodać numery:
źródło
próbować
lub w zależności od potrzeb:
http://www.javascripter.net/faq/convert2.htm
Może zechcesz sięgnąć po książkę Javascript: The Good Parts autorstwa Douglasa Crockforda. Javascript ma dość pokaźną kolekcję problemów! Ta książka ma duży wpływ na ich wyjaśnienie. Zobacz też
oraz doskonały esej pana Crockforda, Javascript: The World's Most Misunderstood Programming Language .
źródło
Zawsze odejmowałem zero.
Przyznane, że metoda operatora jednoargumentowego jest o jeden znak mniej, ale nie każdy wie, czym jest operator jednoargumentowy lub jak google, aby dowiedzieć się, kiedy nie wiedzą, jak się nazywa.
źródło
Jeśli chcesz wykonywać operacje na liczbach jako łańcuchach (jak w przypadku, gdy liczby są większe niż 64 bity), możesz użyć biblioteki big-integer .
źródło
Tutaj masz dwie możliwości, aby to zrobić: -
.
Teraz pokażę ci tutaj za pomocą przykładów (znajdź sumę dwóch liczb).
Korzystanie z jednoargumentowego operatora plus
Korzystanie z metody analizowania
źródło
źródło
Możesz użyć
parseInt
do przeanalizowania ciągu do liczby. Aby być po bezpiecznej stronie, zawsze przekazuj10
jako drugi argument do analizy o podstawie 10.źródło
Upewnij się, że zaokrągliłeś ostateczną odpowiedź do mniej niż 16 miejsc po przecinku dla liczb zmiennoprzecinkowych, ponieważ skrypt java zawiera błędy.
Na przykład 5 - 7,6 = -2,5999999999999996
źródło
@ cr05s19xx zasugerował na zduplikowane pytanie:
JavaScript jest trochę zabawny, jeśli chodzi o liczby i dodawanie.
Podając następujące
„20” - „30” = 10; // zwraca 10 jako liczbę '20' + '30' = '2030'; // Zwraca je jako ciąg znaków Wartości zwracane z document.getElementById są ciągami, więc lepiej jest je wszystkie (nawet działające) przeanalizować jako liczbę, zanim przystąpisz do dodawania lub odejmowania. Twój kod może być:
źródło
Użyj
parseFloat
metody, aby przeanalizować ciągi na liczby zmiennoprzecinkowe:źródło
Używam tego w moim projekcie, używam znaku +, aby traktować ciąg jako liczbę (w zmiennej with_interesst)
Mam nadzieję, że to pomoże
źródło
Działa w moim przypadku, jeśli napotkasz taki sam problem jak ja i nie możesz znaleźć rozwiązania dla tego przypadku i znaleźć to pytanie SO.
Przepraszam za trochę nie na temat, ale kiedy właśnie się dowiedziałem, że to działa, pomyślałem, że warto się tym podzielić.
Nie wiem, czy jest to brudne obejście, czy faktycznie legalne.
źródło
Możesz użyć w ten sposób:
Gdy zastosujesz * 1 w num1, zamień ciąg na liczbę.
jeśli num1 zawiera literę lub przecinek, zwraca wartość NaN pomnożoną przez 1
jeśli num1 ma wartość null, num1 zwraca 0
Z poważaniem!!!
źródło
Spróbuj tego, jeśli szukasz prostego kodu JavaScript i chcesz użyć dwóch pól wejściowych i dodać liczby z dwóch wartości. Oto kod.
Aby uzyskać więcej informacji, odwiedź http://informativejavascript.blogspot.nl/2012/12/javascript-basics.html
źródło