উত্তর:
আপনি number_with_delimiterপদ্ধতিটি চান উদাহরণ স্বরূপ:
<%= number_with_delimiter(@number, :delimiter => ',') %>
বিকল্প হিসাবে, আপনি number_with_precisionনম্বরটি সর্বদা দুটি দশমিক দশকের যথাযথ স্থানে প্রদর্শিত হয় তা নিশ্চিত করতে পদ্ধতিটি ব্যবহার করতে পারেন :
<%= number_with_precision(@number, :precision => 2, :delimiter => ',') %>
number_with_delimiterঅত্যধিক জটিল এবং সত্যিই ধীর, কল স্ট্যাকের বিশাল গভীরতার সাথে। এটি ব্যবহার করে i18nকোনো মানবতা ও extraterrestrial সভ্যতা (হয়তো বা শুধু পারেন পছন্দ করে নিন পরিচিত নম্বর ফরম্যাট পাবে ,বা .এমনকি আপনি যদি যুক্তি যেমন নির্দিষ্ট দশমিক সংখ্যা জন্য)। এটি হাজার হাজার বস্তু বরাদ্দ করে (তাই এর কার্য সম্পাদন নিদর্শনগুলি জটিল এবং প্রোফাইলের পক্ষে শক্ত)। আপনার যদি লোকেলের উপর নির্ভর করে সংখ্যার ফর্ম্যাট করতে বিভিন্ন উপায়ে সমর্থন করার প্রয়োজন না হয় তবে কেবলমাত্র রেগেক্সপগুলি ব্যবহার করে বিবেচনা করুন।
যে কেউ রেল ব্যবহার করছে না তার জন্য:
number.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\\1,').reverse
number.to_s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse
\1যথেষ্ট না ? ধন্যবাদ।
এটি করার সরাসরি উপায়টি , রেলগুলি সহ বা ছাড়াই , হ'ল:
require 'active_support/core_ext/numeric/conversions'
12345.to_s(:delimited) # => "12,345"
12345.6789.to_s(:delimited) # => "12,345.6789"
আরও বিকল্পের জন্য, সক্রিয় সমর্থন কোর এক্সটেনশানগুলি - সংখ্যাসূচক - বিন্যাসকরণ দেখুন ।
ActiveSupport::NumberHelper.number_to_delimited। এই উত্তরটি আরও অনেকগুলি অগ্রাধিকারের দাবি রাখে।
হ্যাঁ, নম্বর হেল্পারটি ব্যবহার করুন । আপনি যে পদ্ধতিটি সন্ধান করছেন তা হ'ল নাম্বার_সহ_ডিলিমিটার ।
number_with_delimiter(98765432.98, :delimiter => ",", :separator => ".")
# => 98,765,432.98
আপনি যদি ভিউয়ের বাইরে কমা যোগ করতে চান এবং আপনি কিছু মডিউল অন্তর্ভুক্ত করতে না চান তবে আপনি সংখ্যা_ টু_ডিলিমিটেড পদ্ধতি (রেল সংস্করণ> = 4.02) ব্যবহার করতে পারেন । উদাহরণ স্বরূপ:
#inside anywhere
ActiveSupport::NumberHelper.number_to_delimited(1000000) # => "1,000,000"
যদি আপনি এটি অনেক কিছু করে থাকেন তবে এফওয়াইআইও কারণ এটি উপরের দ্বারা বোঝানো হয় না, number_with_delimiterপদ্ধতির জন্য রেলগুলির বুদ্ধিমান ডিফল্ট রয়েছে ।
#inside controller or view
number_with_delimiter(2444323.4)
#=> 2,444,323.30
#inside console
helper.number_with_delimiter(233423)
#=> 233,423
আপনি যদি এটি সর্বাধিক সাধারণ পদ্ধতিতে করেন তবে ডিলিমিটার মান সরবরাহ করার দরকার নেই।
দশমিকগুলি হ্যান্ডেল করে এমন রেল ব্যবহার না করা তাদের পক্ষে একটি ভাল উপায়:
parts = number.to_s.split('.')
parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")
parts.join('.')
আপনি যদি আলাদা আলাদা সীমানা চান তবে রেজেক্সে সর্বশেষ ',' পরিবর্তন করুন।
বোনাসের জন্য, রিজেেক্স এভাবে কাজ করছে:
\\1। \\1হয়ে \1যখন মূল্যায়ন যা Regex প্রথম ক্যাপচার গ্রুপ মেলে। এই regex যে হয়(\d) ।(\d)(?=(\d\d\d)+)3 টি সংখ্যার 1 বা ততোধিক গ্রুপের পরে একটি সংখ্যার সাথে মেলে। পেরেন্সের প্রথম সেটটি হ'ল আমাদের \1ক্যাপচার গ্রুপ, দ্বিতীয়টি হবে \2। যদি আমরা কেবল এটি ছেড়ে যেতাম তবে আমরা পেতাম:
123456.gsub!(/(\d)(?=(\d\d\d)+)/, "\\1,") #=> 1,2,3,456 এটি কারণ 1234 ম্যাচ, 2345 ম্যাচ এবং 3456 ম্যাচ তাই আমরা 1, 2 এবং 3 এর পরে কমা রেখেছিলাম।(\d)(?=(\d\d\d)+(?!\d))অর্থ একটি সংখ্যার সাথে মিলিত হয় যার পরে 3 টি সংখ্যার পরে হয় না। এই কাজ করার কারণটি হ'ল gsub স্ট্রিংয়ের সাথে মেলে এমন জিনিসগুলি প্রতিস্থাপন করতে থাকবে। যদি আমরা কেবল প্রথম ম্যাচটি প্রতিস্থাপন করতে যাচ্ছি তবে 123456789 এর মতো সংখ্যার জন্য আমরা 123456,789 পেয়ে যাব। যেহেতু 123456,789 এখনও আমাদের রেজেক্সের সাথে মেলে আমরা 123,456,789 পাই।আমি এখানে কোড পেয়েছি: https://github.com/rails/rails/blob/master/activesupport/lib/active_support/number_helper.rb#L298-L300
এবং এখানেই আমি এই রেজেক্সে কী চলছে তা শিখেছি: http://www.tutorialspPoint.com/ruby/ruby_regular_expressions.htm
{{ value | round | replace: "(\d)(?=(\d\d\d)+(?!\d))", "$1," | prepend: "$" }}
আর একটি সমাধান যা সহায়কগুলি ব্যবহার করে না: 2 দশমিক স্থানের সাথে ফর্ম্যাট করুন এবং তারপরে প্রতিস্থাপন করুন। দ্বারা ,
puts(("%.2f" % 2.5666).gsub('.',','))
>> 2,57
আপনি থেকে পদ্ধতি ব্যবহার করতে পারেন ActiveSupport
উদাহরণ স্বরূপ:
ActiveSupport::NumberHelper::number_to_currency(10000.1234,{precision: 2,unit: ''})
def add_commas(numstring)
correct_idxs = (1..100).to_a.select{|n| n % 6 == 0}.map{|n| n - 1}
numstring.reverse.chars.join(",").chars.select.with_index{|x, i| i.even? || correct_idxs.include?(i)}.join.reverse
end
এটি আমার রুবি ছিল
সংযোজন সম্পাদনা: মূলত এটি সংখ্যার মধ্যে সমস্ত কমা যুক্ত করে এবং কেবলমাত্র সূচকে + 1% 6 নির্বাচন করে
আমি অনুমান করেছি যে কমাগুলি ১০০ পর্যন্ত ঠিক আছে তবে আপনি যদি একটি দীর্ঘ দীর্ঘ সংখ্যা চান তবে কেবল ১০০ একটি উচ্চতর সংখ্যা তৈরি করুন
নতুন বাক্য গঠন
number_with_delimeter(@number, delimeter: ",")
আপনি যদি অর্থের জন্য ব্যবহারকারীকে ডিলিমিটার করতে চান তবে আপনি এটি করতে পারেন
number_to_currency(@number)
$এটিও যুক্ত করবে । আপনি যদি moneyমণি ব্যবহার করেন তবে আপনি এটি করতে পারেন
Money.new(@number,"USD").format
এটিও রাখবে $।
নিম্নলিখিতটি সীমানা এবং যথার্থ উভয় ( এপিআই রেফ ) এর কৌশলগুলি করে ।
ActiveSupport::NumberHelper.number_to_rounded(1234.532, delimiter: ',', precision: 1)
(বা কেবল মতামত থেকে number_to_rounded, প্রত্যয়টির প্রয়োজন নেই)
আছে HTH
ActionView::Helpers::NumberHelper।