# File lib/wx/metar.rb, line 211
    def to_s
      s = StringIO.new
      deg = Degree

      # print a float to d decimal places leaving off trailing 0s
      def pf(f,d=2)
        f = f.scalar if Unit === f
        s = sprintf("%.#{d}f",f)
        s.gsub!(/(\.0+|(\.\d*[1-9])0+)$/, '\2')
        s
      end

      s.puts raw if raw
      s.puts "Conditions at:        #{station}"
      if temp
        s.puts "Temperature/Dewpoint: #{pf temp.to('tempC').abs}#{deg}C / #{pf dewpoint.to('tempC').abs}#{deg}C (#{pf tempF.abs}#{deg}F / #{pf dewpoint.to('tempF').abs}#{deg}F) [RH #{pf rh,1}%]"
      end
      if altimiter
        s.puts "Pressure (altimiter): #{pf altimiter.to('inHg').abs} inches Hg (#{pf altimiter.to('millibar').abs, 1} mb)"
      end
      if wind
        s.puts "Winds:                #{wind}"
      end
      if visibility
        s.puts "Visibility:           #{visibility}"
      end
      if sky
        s.puts "Clouds:               #{sky.first}"
        sky[1..-1].each do |c|
          s.puts " "*22 + c.to_s
        end
      end
      if rvr and not rvr.empty?
        s.puts "Runway Visual Range:  #{rvr.first}"
        rvr[1..-1].each do |r|
          s.puts " "*22 + r.to_s
        end
      end
      if rmk
        s.puts "Remarks:              #{rmk}"
      end
      s.string
    end