检查小数有效数字

时间:2013-11-26 00:12:07

标签: c# decimal significant-digits

我想检查一个十进制数字是否具有第四个重要数字中的值。

//3 Significant figures
var val = 1.015;

//4 Significant figures
var val2 = 1.0155;

如何测试第4个重要位置何时有值。

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

这样做的最佳方式是什么?

这种方法有用吗?

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

4 个答案:

答案 0 :(得分:1)

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值中的最后一位数

示例:(第四重要)

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

Output: 7

答案 1 :(得分:1)

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

要检查是否有4个或更多有效数字可以做

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

当然,这不是做任何错误检查,可以轻易地抛出一些异常,但不需要用一些基本的边界和无效检查来混淆我的答案。

答案 2 :(得分:1)

您可以使用自定义格式字符串执行此操作:

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

答案 3 :(得分:0)

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

更严重的是,看看double formatting options:)

您可以使用双重格式

//       using the   F4:                    1054.3224

然后如果你的字符串的最后一个索引是0,则使用子字符串将其删除。


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

你应该采取任何你使用的解决方案,并将其放在一个返回int的辅助方法中,然后你可以在你的代码中使用它,帮助你的可读性,并且reusalibilyt:)


使用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个挖掘线,则默认将被截断并移除,因为您可以看到上面的第一个输出。