检查十进制有效数字



我想检查小数是否在第四个有效位数中有值。

//3 Significant figures
var val = 1.015;
//4 Significant figures
var val2 = 1.0155;

我如何测试第四个有效位置是否有值。

我想有条件地显示3或4位小数,这取决于第4位是否有非零值。

最好的方法是什么?

这种方法行得通吗?

if((val * 10000) % 10 != 0) ...

要了解格式化输出,请查看http://msdn.microsoft.com/en-us/library/kfsatb94(v=vs.110).aspx

为了检查是否有4个或更多的有效数字,你可以进行

 if (inputString.Split('.')[1].Length > 3)

当然,这并不是进行任何错误检查,可以很容易地抛出一些异常,但不需要用一些基本的边界和无效性检查来打乱我的答案。

1.将值与1000相乘,然后进行(value%10) mod 10,得到3rd significant值的最后一位。

示例:(第三个显著值)

        var val = 1.015;
        int val1=Convert.ToInt32(val * 1000);
        Console.WriteLine(val1 %10); 
Output: 5

2.将值与10000相乘,然后进行(value%10) mod 10以获得4 significant值中的最后一位

示例:(第4位有效)

        var val = 1.0157;
        int val1=Convert.ToInt32(val * 10000);
        Console.WriteLine(val1 %10);
Output: 7

您可以使用自定义格式字符串:

double d = 1.2340;
string strDouble = d.ToString("0.000#");

愚蠢的答案是:在字符串中找到.的位置,然后检查位置+4。

更严重的是,看看双重格式化选项:)

你可以使用这种格式的双

//       using the   F4:                    1054.3224

然后,如果字符串的最后一个索引是0,则使用子字符串将其剪切掉。


截至上次编辑(if((val * 10000) % 10 != 0) ...),是的,它应该有效。。。Sudhakar在回答中也提出了同样的建议。

您可能应该采用任何一种解决方案,并将其放在一个返回int的helper方法中,然后您可以在代码中使用它,这有助于提高可读性,并重新使用:)


使用Marks解决方案,我想这是最简单的。

double d = 3.40;
Console.Out.WriteLine("d 0.0: {0}", d);                     // 3.4
Console.Out.WriteLine("d 0.0: {0}", d.ToString("0.0"));     // 3.4
Console.Out.WriteLine("d 0.00: {0}", d.ToString("0.00"));   // 3.40
Console.Out.WriteLine("d 0.0#: {0}", d.ToString("0.0#"));   // 3.4

请注意,如果在.之后只有3或4个digts,则默认值将被截断并删除,正如您在上面的第一个输出中看到的那样。

相关内容

  • 没有找到相关文章

最新更新