它与文化如何指定十进制数有关。在英语(和 .net 的不变文化)中,小数分隔符是点字符“。”,但在法语(和大多数欧洲文化)中,逗号“,”是小数分隔符。
using System.Globalization;
...
decimal d = Convert.ToDecimal("0.000001",CultureInfo.InvariantCulture);
//outputs 0.000001
Console.WriteLine(d);
CultureInfo french = new CultureInfo("fr");
d = Convert.ToDecimal("0,000001",french);
//outputs 0.000001
Console.WriteLine(d);
d = Convert.ToDecimal("0.000001",french);
//Throws an "Input string was not in a correct format" exception
//because a . is not a valid character in a decimal, according to french culture
如果您通过 UI 从用户那里获取值,则需要格外小心他输入数据的文化,因为很容易将小数点误解为千位分隔符,而不是十 (10.00) 项来保存千。