如何在C#中截断double值的前导数字,我已经尝试了Math.Round(doublevalue,2)但没有给出require结果.我没有在Math类中找到任何其他方法.
例如,我的价值为12.123456789,我只需要12.12.
Jon*_*eet 29
编辑:有人指出,这些方法围绕值而不是截断.很难真正截断一个double值,因为它并非真正在正确的基础上......但截断一个decimal值更为可行.
string x = d.ToString("0.00");
Run Code Online (Sandbox Code Playgroud)
要么
string x = d.ToString("F2");
Run Code Online (Sandbox Code Playgroud)
值得注意的是,double值本身并不"知道"它有多少小数位.只有当你将它转换为字符串时才真正有意义.使用Math.Round将获得最接近的double值x.xx00000(如果您看到我的意思)但x.xx00000由于二进制浮点类型的工作方式,它几乎肯定不会是精确值.
如果您需要除字符串格式之外的任何其他内容,则应考虑使用decimal.价值实际代表什么?
我在.NET中有关于二进制浮点和十进制浮点的文章,您可能会发现它们很有用.
Luk*_*keH 21
你有什么尝试?它对我有效:
double original = 12.123456789;
double truncated = Math.Truncate(original * 100) / 100;
Console.WriteLine(truncated); // displays 12.12
Run Code Online (Sandbox Code Playgroud)