"Bryan C. Warnock" wrote:

> Interesting read.  Dan skimmed over this, but what do .NET (and JVM) doe
> for floating point numbers?

The CLI has three floating point types, of which 2 are visible
to C# and a third is used by the engine.  These are "float32",
"float64", and "native float".  The first two have specific
sizes, and are expected to be IEEE compatible.

The third is the native floating point representation for the
underlying machine, which is assumed to have precision greater
than or equal to float64.  The actual size is unspecified by
the standard, and it is OK to set "native float == float64".

Floating point operations are always performed in "native float",
and then down-graded to float32 or float64 prior to being stored
in a local or object field.

The long and the short of it is that Parrot's FLOATVAL is good
enough for C#'s purposes, with the minor requirement of a
"double -> float" conversion opcode.  Which is essentially a
"truncate and then re-extend to FLOATVAL", similar to the
"int -> short" and "int -> byte" cases.

Cheers,

Rhys.

Reply via email to