जवाबों:
फ्लोट # राउंड रूबी 1.9 में एक पैरामीटर ले सकता है, रूबी 1.8 में नहीं। JRuby 1.8 पर डिफॉल्ट करता है, लेकिन यह 1.9 मोड में चलने में सक्षम है ।
(5.65235534).round(2)
#=> 5.65
(5.6).round(2)
केवल 5.6
sprintf('%.2f', number)
संख्याओं को स्वरूपित करने का एक गूढ़, लेकिन बहुत शक्तिशाली तरीका है। परिणाम हमेशा एक स्ट्रिंग है, लेकिन जब से आप चक्कर लगा रहे हैं, मुझे लगता है कि आप इसे प्रस्तुति उद्देश्यों के लिए वैसे भी कर रहे हैं। sprintf
किसी भी संख्या को किसी भी तरह से स्वरूपित कर सकते हैं, और बहुत अधिक।
पूर्ण स्प्रिंटफ़ दस्तावेज़ीकरण: http://www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
'%.2f' % number
काम भी अधिक सामान्यतः देखा जाता है, कम से कम मेरे अनुभव में।
sprintf
(या format
) करता है %
। इसके लिए कुछ तर्क पर चर्चा की गई है , यह ज्यादातर पठनीयता के बारे में है। ऐसा नहीं है कि हम सभी को स्टाइल गाइड का पालन करना है, बस कुछ कारण बताए :)
0.566666666666666
राउंड टू0.57
"%.2f"
राउंड 5
डाउन, अप के बजाय, क्या इसे ठीक करने का कोई तरीका है?
प्रतिक्रिया मिलने के बाद, ऐसा लगता है कि मूल समाधान काम नहीं किया। इसीलिए उत्तर को एक सुझाव के रूप में अपडेट किया।
def float_of_2_decimal(float_n)
float_n.to_d.round(2, :truncate).to_f
end
अन्य उत्तर काम कर सकते हैं, यदि आप 2 दशमलव स्थानों की संख्याओं को गोल करना चाहते हैं। लेकिन, यदि आप राउंडिंग के बिना पहले दो दशमलव स्थानों के साथ फ्लोटिंग पॉइंट नंबर रखना चाहते हैं , तो वे उत्तर मदद नहीं करेंगे।
इसलिए, पहले दो दशमलव स्थानों के साथ एक फ्लोटिंग पॉइंट नंबर प्राप्त करने के लिए, मैंने इस तकनीक का उपयोग किया। कुछ मामलों में काम नहीं करता है
def float_of_2_decimal(float_n)
float_n.round(3).to_s[0..3].to_f
end
के साथ 5.666666666666666666666666
, यह 5.66
गोल के बजाय वापस आ जाएगी 5.67
। आशा है कि यह किसी की मदद करेगा
def float_of_2_decimal(float_n) num = float_n.to_s.split('.') num[1] = num[1][0..1] num.join(".").to_f end
या बहुत सरल आप उपयोग कर सकते हैंfloat_n.to_d.round(2, :truncate).to_f
11111111111111111.222222222222222
इनपुट के रूप में, पहला शो 1.11
और दूसरा एक शो1.11111111111111e+16
इसे इस्तेमाल करे:
module Util
module MyUtil
def self.redondear_up(suma,cantidad, decimales=0)
unless suma.present?
return nil
end
if suma>0
resultado= (suma.to_f/cantidad)
return resultado.round(decimales)
end
return nil
end
end
end
एक दशमलव को छोटा करने के लिए मैंने अनुसरण कोड का उपयोग किया है:
<th><%#= sprintf("%0.01f",prom/total) %><!--1dec,aprox-->
<% if prom == 0 or total == 0 %>
N.E.
<% else %>
<%= Integer((prom/total).to_d*10)*0.1 %><!--1decimal,truncado-->
<% end %>
<%#= prom/total %>
</th>
यदि आप 2 दशमलव तक कम करना चाहते हैं, तो आपको उपयोग करना चाहिए Integr(a*100)*0.01