Over a million developers have joined DZone.

Float To HTML Fraction Entity

·
Uses HTML entities to display pretty fractional values for applicable floating point numbers.


class Float
  def to_html_fraction
    fraction = case self.abs % 1.0
    when 1.0 / 2 then '½'  # One half
      
    when 1.0 / 4 then '¼'  # One quarter
    when 3.0 / 4 then '¾'  # Three quarters
    
    when 1.0 / 3 then '⅓'  # One third
    when 2.0 / 3 then '⅔'  # Two thirds
      
    when 1.0 / 5 then '⅕'  # One fifth
    when 2.0 / 5 then '⅖'  # Two fifths
    when 3.0 / 5 then '⅗'  # Three fifths
    when 4.0 / 5 then '⅘'  # Four fifths

    when 1.0 / 6 then '⅙'  # One sixth
    when 5.0 / 6 then '⅚'  # Five sixths

    when 1.0 / 8 then '⅛'  # One eighth
    when 3.0 / 8 then '⅜'  # Three eighths
    when 5.0 / 8 then '⅝'  # Five eighths
    when 7.0 / 8 then '⅞'  # Seven eighths
    end
    if fraction
      body = case self.floor
      when -1 then '-'
      when  0 then ''
      else self.to_i.to_s
      end
      body + fraction
    else
      self.to_s
    end
  end
end


And it works something like this:


>> (0.1).html_fraction
=> 0.1
>> (0.25).html_fraction
=> ¼
>> (0.50).html_fraction
=> ½
>> (0.75).html_fraction
=> ¾
>> (1.0).html_fraction
=> 1.0
>> (2.25).html_fraction
=> 2¼
>> (3.5).html_fraction
=> 3½
>> (4.75).html_fraction
=> 4¾
>> (5.85).html_fraction
=> 5.85
>> (-1.5).html_fraction
=> -1½
>> (-1.6).html_fraction
=> -1.6;
>> (-0.25).html_fraction
=> -¼
Topics:

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}