Próbuję uzyskać ułamek część liczby dziesiętnej w szynach. Na przykład mam numer, że "1,23" i chcę uzyskać "23" Może to być zbyt łatwe, ale czy ktoś ma pojęcie o tym, jak mogę to zrobić?pobranie części ułamkowej liczby dziesiętnej
Odpowiedz
Nie jestem pewien, czy to jest najprostszym sposobem, aby to zrobić - ale można po prostu podzielić liczbę używając „” charakter - tak:
number = 1.23
parts = number.to_s.split(".")
result = parts.count > 1 ? parts[1].to_s : 0
n = 1.23
n.modulo(1)
=> 0.22999999999999998
n-n.to.i
=> 0.22999999999999998
Zalecana czytać http://floating-point-gui.de/
dzięki Jonas, próbowałem go. – yagmurdursun
spróbować użyć metody modulo:
1.23.modulo(1) => 0.23
Czytaj więcej: http://www.ruby-doc.org/core-1.9.3/Numeric.html#method-i-modulo
Albo można przekonwertować pływaka do liczby całkowitej i odjąć go od pierwotnej wartości pływaka .
1.23 - 1.23.to_i => 0.23
dzięki Eugene, spróbowałem też. – yagmurdursun
Otrzymuję '(1.1) .modulo (1) # 0.10000000000000009' który jest mniejszy niż dopuszczalny! –
I otrzymuję 1.234 - 1.234.to_i # 0.2399999999999999, co jest mniej niż dopuszczalne. Jest to typowe dla arytmetyki zmiennoprzecinkowej. Czy sposób EfratBlaier jest najlepszy? – labyrinth
a=1.23 #value of a will be 1.23
a=a-a.to_i #value of a will be 0.23
jeśli wiesz żądaną dokładność, to może być odrobinę szybsze rozwiązanie to_s.
1.1234.modulo(1).round(4) #0.1234
Wybór odpowiedniego rozwiązania wymaga zrozumienia typu, z którym pracuje użytkownik. Jeśli twoje wartości są zmiennoprzecinkowe (standardowy typ dla liczb niecałkowitych w Ruby), to logicznie poprawne odpowiedzi, takie jak mod(1)
, mogą powodować nieoczekiwane wyniki z powodu floating point errors. W każdym przypadku, w którym Float jest właściwym typem danych, którego należy użyć, jest to prawdopodobnie akceptowalne.
Jeśli błędy zmiennoprzecinkowe są , a nie dopuszczalne, nie należy używać Float
! Ruby posiada świetną klasę BigDecimal
, która jest znacznie dokładniejsza kosztem wydajności i nieco bardziej szczegółowej składni.
decimal = BigDecimal.new("1.23")
decimal.fraC#=> 0.23
Po wypróbowaniu wszystkiego ... Czuję najlepszą odpowiedzią jest (num - num.to_i).abs
ponieważ działa również dla liczb ujemnych.
np.
(1,23 - 1.23.to_i) nazwa.abs = 0,23
(-1.23 - -1.23.to_i) nazwa.abs = 0,23
- 1. C++ konwertować ułamkowej części numeru do całkowitej
- 2. Problem z analizą liczby dziesiętnej
- 3. jQuery animacja przyrost liczby dziesiętnej/dekrementacja
- 4. Jak zatrzymać parseFloat() od zerowania zera do prawej części dziesiętnej
- 5. Jak zrobić Integer.parseInt() dla liczby dziesiętnej?
- 6. Konwersja liczby dziesiętnej na liczbę mieszaną (podstawową)
- 7. Jak sprawdzić, czy podwójna wartość nie ma części dziesiętnej
- 8. Najszybszy sposób obliczania długości dziesiętnej liczby całkowitej? (.NET)
- 9. Wspólna podpowiedź Highcharts wymaga innej wartości i różnej liczby dziesiętnej.
- 10. Jak używać liczby dziesiętnej w wzorcu adresu URL Django?
- 11. Railsy number_to_currency delete końcowe zera z prawej strony liczby dziesiętnej
- 12. Dzielenie liczby na przypadkowe, nierówne części
- 13. Aproksymacja od dziesiętnej do irracjonalnej
- 14. Wywoływanie klasy dziesiętnej
- 15. Zdobądź ostatnie (tzn. Endswith) 3 cyfry dziesiętnej (.NET)
- 16. Parsowanie wartości dziesiętnej z ciągu w Ruby
- 17. Określanie skali dziesiętnej MAX używanej na kolumnie
- 18. Korekcja błędów na krótkiej liczbie dziesiętnej
- 19. Przypisanie zmiennej dziesiętnej SQL Server?
- 20. Obliczanie wartości dziesiętnej na Pythonie
- 21. Jak wygenerować liczbę losową danej liczby dziesiętnej między liczbą 2 w Pythonie?
- 22. Wydrukuj liczbę całkowitą lub liczbę zmiennoprzecinkową za pomocą liczby n dziesiętnej
- 23. Konwersja wartości Varchar do liczby całkowitej/wartości dziesiętnej w SQL Server
- 24. Dlaczego należy użyć ciągu znaków w JSON do reprezentowania liczby dziesiętnej
- 25. Android/Java: Zaokrąglanie numeru w celu uzyskania wartości dziesiętnej
- 26. ValueError: liczba ujemna nie może zostać podniesiona do potęgi ułamkowej
- 27. Eclipse: Pobranie aktualnego pliku?
- 28. Lua: Pobranie strony internetowej
- 29. Git: pobranie określonego zatwierdzenia
- 30. Pozostawić tylko dodatnie liczby dziesiętne
, która działa! dzięki EfratBlaier. – yagmurdursun
Przyszli czytelnicy, proszę nie używać tego podejścia. Może działać w uproszczonym przypadku, ale potknie się w każdym locale-świadomy scenariusz. Chociaż nie jest to bardzo podatne na błędy w Rubim, które koduje '.' jako separator zmiennoprzecinkowy, promowałoby to zły nawyk, aby używać go z innymi, mniej wyrozumiałymi językami.Proszę używać funkcji matematycznych do operacji matematycznych, patrz odpowiedzi poniżej. –