2012-09-12 29 views
48

Tôi muốn để định dạng một chuỗi chứa biến float bao gồm chúng với một số tiền cố định của số thập phân, và tôi muốn làm điều đó với loại cú pháp định dạng:Làm thế nào để định dạng một chuỗi có float trong Ruby bằng cách sử dụng # {variable}?

amount = Math::PI 
puts "Current amount: #{amount}" 

và tôi muốn để có được Current amount: 3.14.

Tôi biết tôi có thể làm điều đó với

amount = Math::PI 
puts "Current amount %.2f" % [amount] 

nhưng tôi hỏi nếu chúng ta có thể làm điều đó theo cách #{}.

+0

Có nhiều cách vô hạn để giải quyết bất kỳ vấn đề lập trình, nhưng một số thì tốt hơn rất nhiều so với những người khác. Tại sao bạn không muốn sử dụng đúng công cụ cho công việc này? –

Trả lời

40

Sử dụng round:

"Current amount: #{amount.round(2)}" 
+0

Không cần thiết đường ray: http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round –

+0

Ah, ok. Tôi đã thử mã trong IRB của tôi. Nó không hoạt động. Nhưng phiên bản Ruby của hệ thống của tôi là 1.8.7. – Bjoernsen

+18

Không chắc chắn về điều này - nếu bạn là số 11,3 và bạn muốn 11,30 bạn không nhận được định dạng chính xác ... – xmjw

32

Bạn có thể làm điều này, nhưng tôi thích phiên bản String#%:

puts "Current amount: #{format("%.2f", amount)}" 

Như @Bjoernsen chỉ ra, round là phương pháp đơn giản nhất và nó cũng làm việc với tiêu chuẩn Ruby (1.9), không chỉ Rails:

http://www.ruby-doc.org/core-1.9.3/Float.html#method-i-round

+0

Tại sao bạn thích phiên bản Chuỗi? – Bjoernsen

+0

Vì tôi cố gắng đặt trước nội suy cho các biểu thức đơn giản. –

5

Vâng, nó có thể:

puts "Current amount: #{sprintf('%.2f', amount)}" 
41

Bạn có thể sử dụng "#{'%.2f' % var}":

irb(main):048:0> num = 3.1415 
=> 3.1415 
irb(main):049:0> "Pi is: #{'%.2f' % num}" 
=> "Pi is: 3.14" 
+2

đây phải là câu trả lời được chấp nhận. – Fatih

+3

Hãy coi chừng làm tròn khác nhau: '' '"% .2f "% 1.345 =>" 1.34 "' '' '' '"% .2f "% 1.346 =>" 1.35 "' '' '' ' "% .2f"% 1.345.round (2) => "1.35" '' ' ' '' "% .2f"% 1.346.round (2) => "1.35" '' ' –

+0

Sẽ tuyệt vời để xem liên kết đến tài liệu – yegor256

Các vấn đề liên quan