是否有可能强制参数tpye仅接受给定格式,而不仅仅是在运行时?
我的意思是,例如我有一个方法:
public void AcceptTest(double version)
{
}
此方法将接受1.0但1.00,1.0067等。 我怎么解决只接受x.y而没有别的,但没有通过String.Format或其他东西从代码中检查它。 所以我甚至不能在代码编辑器中编写不可接受的格式。
谢谢!
答案 0 :(得分:0)
你的目标不是很明确,取决于它,任何答案都是可能的。包括几个读作“你在一条糟糕的赛道上”和“那是不可能的”。
你不能用Double。 Double被定义为小数位的可能性很高的数字。在编译和运行时,它的范围内的每个数字都是可行的。
你可以自动围绕它,可能被认为是不良行为。 您可以检查“输入”是否与“舍入到第1个十进制数字的输入”相同(以查看对方是否为您进行了舍入)。
请注意,浮动不精确仍将导致最终的小数位。这是浮点数的固有部分: https://www.youtube.com/watch?v=PZRI1IfStY0
一些十进制实现允许您指定逗号后允许的位数。但是.NET one is not among them。至少它通过降低值范围来避免十进制不精确。
你可以存储为(无符号)整数。在输出期间设置逗号将成为显示方面的事情。也许为此创建自己的结构,这样你就可以提供自己的ToString()。
跳跃有帮助,但是苛刻是必要的。特别是你的目标和意图。或者提出这种限制的具体问题是必要的。