Ratio of Uppercase Letters to Lowercase In this challenge you and your friends are debating on which case is better, uppercase or lowercase? To find out, you write a program to do this for you.

Because esolangs scare your friends, and verbose code scares you, your code will need to be as short as possible.



Examples

PrOgRaMiNgPuZzLeS &amp; CoDe GoLf
0.52 uppercase

DowNGoAT RiGHtGoAt LeFTGoat UpGoAT
0.58 uppercase

Foo BaR Baz
0.56 lowercase




Specifications

The input will consist only of ASCII characters. All non-alphabetic characters should be ignored. There will be at least 1 character of each case

The output should be the amount of the case that appears the most often over the total amount of alphabetic characters. It should be a decimal accurate to at least 2 decimal places. If uppercase appears more often, the output should end with uppercase, or lowercase.

There will never the the same amount of uppercase and lowercase characters.
JavaScript (ES6) 87 bytes
Edit 1 byte saved thx ETHProductions
Edit 1 more byte saved thx l4me
An anonymous function. Long, but I didn't find a way to golf this more
s=&gt;(l=t=0,s.replace(/[a-z]/ig,c=&gt;l+=++t&amp;&amp;c&gt;'Z'),l/=t,l&lt;.5?1-l+' upp':l+' low')+'ercase'

Less golfed
s=&gt;( // arrow function returning the value of an expression
  // here I use comma for clarity, 
  // in the golfed version it's all merged in a single expression
  t = 0, // counter for letters
  l = 0, // counter for lowercase letters 
  s.replace(
    /[a-z]/ig, // find all alphabetic chars, upper or lowercase
    c =&gt; // execute for each found char (in c)
        l += ++t &amp;&amp; c&gt;'Z', // increment t, increment l if c is lowercase
  ),
  l /= t, // l is the ratio now
  ( l &lt; .5 // if ratio &lt; 1/2
    ? (1-l) +' upp' // uppercase count / total (+&quot; upp&quot;)
    : l +' low'     // lowrcase count / total (+&quot; low&quot;)
  ) + 'ercase' // common suffix
)