获取数字的小数部分和小数点后的位数(C#)

MT.*_*MT. 1 c# numbers decimal

有没有人知道一种优雅的方法来获取数字的小数部分?特别是我希望获得小数点后的确切位数,以便可以适当地格式化数字.我想知道如果没有任何类型的字符串提取使用文化特定的小数分隔符,有没有做到这一点....

例如
98.0将格式化为98
98.20将格式化为98.2
98.2765将格式化为98.2765等.

Fre*_*örk 5

它只是为了格式化目的ToString,我猜是只是打电话会做的伎俩?

double d = (double)5 / 4;
Console.WriteLine(d.ToString()); // prints 1.75
d = (double)7 / 2;
Console.WriteLine(d.ToString()); // prints 3.5
d = 7;
Console.WriteLine(d.ToString()); // prints 7
Run Code Online (Sandbox Code Playgroud)

当然,这将根据当前文化格式化数字(意味着小数符号,千位分隔符等会有所不同).

更新

正如Clement H在评论中指出的那样; 如果我们处理大量数字,在某些时候d.ToString()将返回一个带有科学格式的字符串(例如"1E+16"代替"10000000000000000").使用一种方法来克服这个探测,并强制打印完整的数字d.ToString("0.#"),这也将产生与上面的代码样本产生的较低数字相同的输出.