Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.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# 设置双精度点后的位数_C#_Types_Double - Fatal编程技术网

C# 设置双精度点后的位数

C# 设置双精度点后的位数,c#,types,double,C#,Types,Double,在c#double type中,如何设置点后的位数,我只需要4。 谢谢。你不能。不是那样的。您可以通过这种方式设置双精度的格式(例如,使用“f4”作为格式字符串),但是如果您处理的值具有自然的小数位数,那么您可能应该使用十进制。您能给我们更多关于您的值代表什么的信息吗?您不能直接设置双精度点后的位数 可以使用格式字符串更改double的字符串表示形式 一个例子是: string.Format("{0:0.####}", number); 或者正如Jon Skeet所指出的: number.To

在c#double type中,如何设置点后的位数,我只需要4。
谢谢。

你不能。不是那样的。您可以通过这种方式设置双精度的格式(例如,使用
“f4”
作为格式字符串),但是如果您处理的值具有自然的小数位数,那么您可能应该使用
十进制
。您能给我们更多关于您的值代表什么的信息吗?

您不能直接设置双精度点后的位数

可以使用格式字符串更改double的字符串表示形式

一个例子是:

string.Format("{0:0.####}", number);
或者正如Jon Skeet所指出的:

number.ToString("f4")

使用此选项将两个浮点数与分数中的4位数字进行比较:

  if (Math.Abs(a - b) < 1E-4) {
    // close enough
    //...
  }
if(数学Abs(a-b)<1E-4){
//足够近
//...
}

2点的x等于5.0000和4.999996,我需要它true@Bass:如果你只是在做一个平等测试,那么nobugz的答案可能是正确的。我仍然会考虑你是否想要使用十进制,尽管它取决于你所得到的值。如果你想绝对确定它们是相等的,那么它应该是双。ε,而不是1E-4。如果你想说它们“足够接近”相等,那么你的代码是finedoull。Epsilon不能按原样工作,它太小了。一个合适的epsilon类似于*1E-15,但对于每个FP操作累积的错误,它必须递增。inputValue=Math.Round(inputValue,4);改编自