2012-03-31 7 views
48

Tôi cần làm việc với số thập phân. Trong chương trình của tôi, người dùng cần phải đặt một số với số thập phân để chuyển đổi số đó.Chuyển chuỗi thành số thập phân trong ruby ​​

Vấn đề là: Nếu tôi cố gắng chuyển đổi đối số thành một số tôi nhận được số nguyên không có số thập phân.

# ARGV[0] is: 44.33 

size = ARGV[0] 

puts size.to_i 
# size is: 44 
# :(

Trả lời

78

Bạn gọi to_i, bạn nhận được số nguyên.

Hãy thử gọi to_f, bạn sẽ nhận được một phao.

Để biết thêm các phương pháp chuyển đổi chuỗi, look here.

-2

Bạn cũng có thể sử dụng sprintf để có con số chính xác của điểm thập phân:

a = 2.45 
p sprintf "%.6f", a #=> "2.450000" 
+3

Anh ấy yêu cầu chuyển đổi chuỗi thành số thập phân, không phải theo cách khác. –

3

Bạn cũng có thể sử dụng lớp thập phân cho nó

a = '2.45' 
Decimal(a) # => 2.45 

UPDATE:

Sử dụng BigDecimal như @ bigtex777 được đề cập:

nguồn: http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html

+1

NoMethodError (phương thức không xác định 'Thập phân 'cho ... Một" tính năng/cải tiến "khác từ nhóm hủy diệt" trước đây là mã làm việc ", không nghi ngờ gì. – JosephK

+2

Điều này dường như không có tác dụng gì cả. Bạn có thể' yêu cầu ' BigDecimal.new ('3.333') ' – bigtex777

+0

Vâng, có vẻ như Decimal() là một phương thức từ một số phiên bản ruby ​​cụ thể mà tôi không thể nhớ. BigDecimal thuộc về ruby ​​stdlib. -> http: // ruby-doc .org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html Tốt hơn nên sử dụng nó. – lucianosousa