我尝试在 C# 中将小数格式设置为 0:0.0 尝试过这个代码
string nv = textBox7.Text.Trim().Replace(',', '.');
res = Convert.ToDecimal(nv, new CultureInfo("en-GB"));
但 res 总是显示带有逗号的结果,也尝试过
new CultureInfo("en-GB")
但问题依然存在 提前谢谢你。
正如其他评论和答案所暗示的那样,您首先需要了解一些基础知识。我可能会说一些你已经知道的事情,但请耐心等待:
textBox7.Text
包含 string
,而不是 decimal
。decimal
进行计算,您必须将其转换(我认为您已经做到了这一点)res
是小数,因此每当您想查看其值时,都会将其转换为 string
。无论是将鼠标悬停在其上时将其写入 Console
还是调试器。该转换将使用您当前的区域设置。 这就是为什么你总是看到逗号。a) 标准格式。示例:
Console.WriteLine(res.toString("F2"));
b) 自定义格式。示例:
Console.WriteLine(res.toString("[##-##-##]"));
c) 文化信息。示例:
Console.WriteLine(res.ToString(CultureInfo.CreateSpecificCulture("nl-BE")));
d)合并。发疯!两者都做!示例:
Console.WriteLine(res.ToString("F2", CultureInfo.CreateSpecificCulture("nl-BE")));
基于此,我建议如下:
decimal res = Convert.ToDecimal(textBox7.Text, new CultureInfo("en-GB"));
这假设您的用户使用逗号输入数字(因为 en-GB 小数点分隔符是逗号)。如果不是,请使用正确的 CultureInfo,例如 en-US 的 Invariant。
res
是一个 decimal
,而不是字符串。所以它不能有格式。小数是没有关联格式的纯数学数字。仅当您将 decimal
转换为 string
时,该格式才会存在。
您可以使用
res.ToString(CultureInfo.InvariantCulture)
生成使用 .
作为小数点分隔符的字符串。
这将为您提供不带逗号的小数数字,例如“15000.00”:
FormatNumber(nv, , , , 0)