如何在第3个小数后删除小数

时间:2014-02-20 15:39:51

标签: c#

我有一个UI控件,它基于double而不是decimal。

当它应返回值0.001时,它返回值0.00100000004749745

如何将此值转换为具有正确值0.001的小数?

请注意,我不是要将其格式化为字符串,只是获取正确的值。

5 个答案:

答案 0 :(得分:3)

只需使用Math.Round Method (Decimal, Int32)

            double d = 0.00100000004749745;
            double ma = Math.Round(d, 3);  
            //if you want it as a string 
            string s = ma.ToString(); 

答案 1 :(得分:1)

double d= 0.00100000004749745;
String s=d.ToString("N3");    //gives you 0.001
decimal dd=Convert.ToDecimal(s);//converts double value 0.001 into decimal

答案 2 :(得分:0)

试试这个

double d= yourNum;
String s=d.ToString("0.00");

答案 3 :(得分:0)

您遇到0.1无法在<{1}}中完全存储的事实。

如果您只想显示结果为3位小数而不用担心浮点错误只需使用:

double

答案 4 :(得分:0)

您可以使用字符串格式找到已在此处回答的类似问题:

c# - How do I round a decimal value to 2 decimal places (for output on a page)

这可以是一种使用以下方法解决问题的简单方法:

decimalVar.ToString ("#.###");

为了更复杂的目的,如果你想继续使用小数值,可以使用它:

decimal.Round(yourValue, 3, MidpointRounding.AwayFromZero);