Tôi đang cố gắng lấy một phần thập phân của một số thập phân trong đường ray. Ví dụ tôi có một số, rằng "1,23" và tôi muốn có được "23" Nó có thể là quá dễ dàng nhưng, không ai có bất kỳ ý tưởng về làm thế nào tôi có thể làm gì?lấy phần thập phân của số thập phân
Trả lời
Tôi không chắc đó có phải là cách dễ nhất để làm điều đó hay không - nhưng bạn có thể chỉ cần chia số bằng cách sử dụng "." nhân vật - như thế này:
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
Đề xuất đọc http://floating-point-gui.de/
nhờ Jonas, tôi đã thử nó. – yagmurdursun
Cố gắng sử dụng phương pháp modulo:
1.23.modulo(1) => 0.23
đọc thêm ở đây: http://www.ruby-doc.org/core-1.9.3/Numeric.html#method-i-modulo
Hoặc bạn có thể chuyển đổi phao để nguyên và trừ nó từ giá trị float gốc .
1.23 - 1.23.to_i => 0.23
cảm ơn Eugene, tôi đã thử nó. – yagmurdursun
Tôi nhận được '(1.1) .modulo (1) # 0.10000000000000009' ít hơn chấp nhận được! –
Và tôi nhận được 1.234 - 1.234.to_i # 0.2399999999999999 ít hơn mức chấp nhận được. Đây là điển hình của điểm động học số học. Vì vậy, là cách tốt nhất của EfratBlaier. – labyrinth
a=1.23 #value of a will be 1.23
a=a-a.to_i #value of a will be 0.23
nếu bạn biết chính xác mong muốn của bạn, điều này có thể là một chút nhanh hơn để giải pháp to_s.
1.1234.modulo(1).round(4) #0.1234
Quyết định giải pháp thích hợp yêu cầu hiểu loại bạn đang làm việc. Nếu các giá trị của bạn là Float (loại tiêu chuẩn cho các số không phải toàn bộ trong Ruby) thì các câu trả lời đúng về mặt logic như mod(1)
có thể tạo ra các kết quả không mong muốn do floating point errors. Đối với bất kỳ trường hợp Float là loại dữ liệu thích hợp để sử dụng ở nơi đầu tiên, điều này có thể chấp nhận được.
Nếu lỗi dấu phẩy động là không chấp nhận được, không sử dụng Float
! Ruby đi kèm với lớp học tuyệt vời BigDecimal
chính xác hơn với chi phí hiệu suất và cú pháp dài hơn một chút.
decimal = BigDecimal.new("1.23")
decimal.fraC#=> 0.23
Sau khi thử tất cả mọi thứ ... Tôi cảm thấy câu trả lời tốt nhất là (num - num.to_i).abs
vì nó cũng làm việc cho số âm.
ví dụ:
(1,23 - 1.23.to_i) .abs = 0,23
(-1,23 - -1.23.to_i) .abs = 0,23
- 1. Lấy phần thập phân ra khỏi số phao
- 2. Cách lấy một số thập phân từ số thập phân NSString
- 3. Làm tròn số thập phân của Python
- 4. cách phân tích cú pháp thập phân thập phân hoặc thập phân trong Python
- 5. Làm tròn số thập phân của Excel?
- 6. python: lấy số không có chữ số thập phân
- 7. Members javascript số thập phân
- 8. Số thập lục phân C#
- 9. PHP tròn số thập phân
- 10. Biểu diễn nhị phân của một số thập phân .NET
- 11. Chuyển đổi một phần văn bản thành số thập phân
- 12. Số Oracle để C# số thập phân
- 13. Làm tròn phần thập phân trong ios
- 14. Có số thập phân, muốn cắt thành 2 chữ số thập phân nếu có
- 15. Sự khác biệt giữa số thập phân và số thập phân
- 16. Trong C# có số thập phân và số thập phân khác nhau?
- 17. Sử dụng PHP để tạo ngẫu nhiên số thập phân Beteween Hai số thập phân
- 18. String.format() và số thập phân trong Java
- 19. Bàn phím số với dấu phân cách thập phân
- 20. Dấu thập phân hoặc dấu phẩy thập phân trong Android
- 21. Chuyển đổi thập phân sang thập phân trong lisp chung
- 22. Python Chuyển đổi phân số thành số thập phân
- 23. hex đến 64 Ký số thập phân
- 24. Java thập lục phân
- 25. Từ Phân số thành Thập phân và Quay lại?
- 26. Format một BigDecimal như String với tối đa 2 chữ số thập phân, loại bỏ 0 trên phần thập phân
- 27. Số thập phân trong nhập số của jQuery Mobile
- 28. nhận Ceil() của thập phân trong python?
- 29. Làm tròn số thập phân trong Django
- 30. Chuyển mảng byte sang số thập phân
hoạt động! cảm ơn EfratBlaier. – yagmurdursun
Người đọc trong tương lai, vui lòng không sử dụng phương pháp này. Nó có thể làm việc trong một trường hợp đơn giản, nhưng sẽ có chuyến đi trong bất kỳ kịch bản nhận thức cục bộ nào. Mặc dù không phải là rất dễ bị lỗi trong Ruby mà hardcodes '.' như dấu phân cách dấu chấm động, nó sẽ thúc đẩy thói quen xấu được sử dụng với các ngôn ngữ khác, ít tha thứ.Vui lòng sử dụng các hàm toán học cho các phép toán, xem các câu trả lời dưới đây. –