tags:

views:

64

answers:

2

I'm looking for a way in C# .NET to get the Unicode character corresponding to a given fraction. In my code I have the numerator and denominator and I need to work out how to get the corresponding Unicode character from these, which is then displayed in a WinForms combobox.

Any ideas?

+4  A: 

You will need a lookup table, there is no algorithmic method available (Unicode codepoints are not allocated like that).

Of course most fractions do not have a codepoint, only a few "common" fractions have been added.

And of course, even with the codepoint your typeface may not include them.

Richard
+1  A: 
public static string VulgarFraction(int numerator, int denominator)
{
  if(denominator == 0)
    return "\u221E";
  if(denominator < 0)
    return VulgarFraction(-numerator, -denominator);
  return numerator.ToString() + '\u2044' + denominator.ToString();
}

The precomposed vulgar fractions are included for compatibility, and not encouraged. Use U+2044 FRACTION SLASH to indicate a fraction. This indicates the desire to render as a fraction to a layout system, and is also widely supported by less sophisticated rendering methods.

If you really do need to use the precomposed characters, then a look-up table is the only reasonable way (you could build a big set of branching ifs and elses, but it's more work for less performance).

Jon Hanna