উত্তর:
ফ্লাট # রাউন্ডে রুবি ১.৮-এ নয়, রুবি ১.৯ এ পরামিতি নিতে পারে। জেআরবি ডিফল্ট 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# মেমোথড- আই-স্প্রিন্টফ
'%.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