.NET – ¿Por qué no hay ningún tipo de datos numéricos de punto fijo en C #?

Parece que habría un montón de usos para un tipo de datos de punto fijo. ¿Por qué no hay uno en .NET?

Nota: entiendo que podemos crear nuestras propias clases / estructuras para satisfacer nuestros propósitos y necesidades de puntos fijos. Esa no es mi pregunta. Quiero saber POR QUÉ MS decidió no incluir un tipo de datos numérico de punto fijo.

Decimal (base-10 punto flotante) se consideró suficientemente bueno.

Estás buscando la clase poco conocida System.Data.SqlTypes.SqlDecimal .

Un problema probablemente tiene que ver con la pregunta: ¿dónde arreglas el punto? Un tipo en .NET no puede ser parametrizado por otros argumentos que no sean tipos, por lo que FixedNum<18,6> simplemente no es posible. Y no desea crear FixedNum1x0 , FixedNum1x1 , FixedNum2x0 , FixedNum2x1 , FixedNum2x2 , etc.

Debe poder parametrizar su tipo de punto fijo, no solo los valores, ya que eso haría que sea casi imposible rastrear errores:

 FixedNum f() { return new FixedNum(1, decimals: 2); } FixedNum x = new FixedNum(1, decimals: 0); ... x = f(); // precision of x increased. 

Por lo tanto, debería verificar y restringir los valores de sus puntos fijos cada vez que los obtenga de algo que no sea una variable local. Como lo haces con el decimal cuando quieres una escala o precisión fija.

En otras palabras, dadas las limitaciones del sistema de tipo .NET, el decimal ya está integrado en la implementación de la clase FixedNum anterior.