我有一个UI控件,它基于double而不是decimal。
当它应返回值0.001时,它返回值0.00100000004749745
如何将此值转换为具有正确值0.001的小数?
请注意,我不是要将其格式化为字符串,只是获取正确的值。
答案 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);