ric*_*ard 7 .net c# fixed-point
看起来固定点数据类型会有很多用途.为什么.NET中没有一个?
注意:我知道我们可以创建自己的类/结构来满足我们的定点目的和需求.那不是我的问题.我想知道为什么MS决定不包括定点数字数据类型.
你正在寻找这个鲜为人知的System.Data.SqlTypes.SqlDecimal课程.
一个问题可能与这个问题有关:你在哪里解决问题?.NET中的类型不能通过除类型之外的其他参数进行参数化,因此FixedNum<18,6>根本不可能.而你不希望创建FixedNum1x0,FixedNum1x1,FixedNum2x0,FixedNum2x1,FixedNum2x2,等.
您需要能够参数化您的固定点类型,而不仅仅是值,因为这将导致几乎不可能跟踪错误:
FixedNum f() { return new FixedNum(1, decimals: 2); }
FixedNum x = new FixedNum(1, decimals: 0);
...
x = f(); // precision of x increased.
Run Code Online (Sandbox Code Playgroud)
因此,每次从不是局部变量的东西中获取它们时,您需要检查并约束固定点值.就像你decimal想要一个固定的比例或精度一样.
换句话说,鉴于.NET类型系统的局限性,decimal已经内置了FixedNum类的实现.