Skip to main content

Use decimals, not doubles

Floating point numbers, i.e. float and double, are the result of a trade-off between numerical precision and computation time. While great in many applications, we opted not to support them in Nancy to prevent their approximation errors from propagating through our algorithms.

Still, you will often want to write literals as a starting point in your code. To do this, you can use decimals by just appending an m to the right.

var a = new RateLatencyServiceCurve(4, 0.5);    // double, will not compile
var a = new RateLatencyServiceCurve(4, 0.5m); // decimal, ok

A decimal is a precise representation which will be translated, without any loss of accuracy, into a Rational with 10x10^x as its denominator.