Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 只接受给定格式的double类型作为C中的方法参数#_C# - Fatal编程技术网

C# 只接受给定格式的double类型作为C中的方法参数#

C# 只接受给定格式的double类型作为C中的方法参数#,c#,C#,是否有可能强制参数tpye只接受给定的格式,而不只是在运行时接受 我的意思是,例如,我有一个方法: public void AcceptTest(double version) { } 此方法将接受1.0,但不接受1.00、1.0067等。 如何解决只接受x.y而不接受其他内容,而不通过字符串、格式或其他方式从代码中进行检查的问题。 因此,我甚至不允许在代码编辑器中编写不可接受的格式 谢谢大家! 你的目标不是很明确,根据它,任何数量的答案都是可能的。包括几条写着“你在一条糟糕的道路上”和“那

是否有可能强制参数tpye只接受给定的格式,而不只是在运行时接受

我的意思是,例如,我有一个方法:

public void AcceptTest(double version)
{

}
此方法将接受1.0,但不接受1.00、1.0067等。 如何解决只接受x.y而不接受其他内容,而不通过字符串、格式或其他方式从代码中进行检查的问题。 因此,我甚至不允许在代码编辑器中编写不可接受的格式


谢谢大家!

你的目标不是很明确,根据它,任何数量的答案都是可能的。包括几条写着“你在一条糟糕的道路上”和“那是不可能的”

你不能用双人。Double被定义为小数点可能性很大的数字。它范围内的每个数字在编译和运行时都是可行的

你可以自动取整它,这可能被认为是不良行为。 您可以检查“输入”是否与“输入四舍五入到第一个小数位数”相同(以查看对方是否为您的输入四舍五入)

请注意,浮点不精确仍然会导致以wierd小数位结束。这是浮点数的固有部分:

一些十进制实现允许您指定逗号后允许的位数。但是这个。至少它通过降低值范围避免了小数点的不精确性

您可以只存储为(无符号)整数。在输出期间设置逗号将成为显示端的事情。也许可以为此创建自己的结构,以便提供自己的ToString()


这很有帮助,但需要进行钙化。特别是你的目标和意图。或者是造成这种限制的具体问题。

如何定义“不可接受的格式”?所有这些值都是有效的
double
您不能。对于编译器而言,
double
double
double
。。。对于编译器,1.0、1.01、1.001…
系统之间没有区别。Double
没有格式,只有一个值。也许你可以使用
System.Version
。你可以,如果你自己做的话,看看
Version
类而不是
double
:谢谢你的评论。我得到了很多有用的信息。我的问题的目的有两点,第一点是简单。如果我创建一个自定义类来定义一个plus类的版本号。我可以使用integer,但它会导致开发人员的可读性问题。如果我把它定义为一个整数,每个人只会看到:AcceptTest(1),它肯定比AcceptTest(1.0)更难阅读。这是我提出问题的唯一两点,简单性和可读性。哦,这是为了版本控制。我的第一个猜测是弦。但是寻找它,显然.NET有一个类。一个简单的“4int,sealded”案例:您可以向您的版本中添加一个自定义解析函数(或者将解析作为扩展方法添加到该版本中)。