如何在C#中实现小数数值计算?
支持小数数值计算的代码修改方案
没问题!要实现带小数的数值计算,核心就是把原来的整数类型替换成支持小数的数值类型,同时调整对应的字符串转换方法就行,我给你详细说明:
为什么原来的代码不支持小数?
你之前用的int是整数类型,只能存储没有小数部分的数值,所以哪怕用户输入了小数,Convert.ToInt16也会直接截断小数部分,导致计算结果不符合预期。
修改后的代码(推荐用decimal,适合精确计算)
decimal类型专门用于需要精确小数表示的场景(比如金额、日常数值计算),替换后的代码如下:
// 将整数类型替换为decimal(原生支持小数存储) decimal Var1; decimal Var2; decimal Uitkomst; // 转换方法换成ToDecimal,适配小数格式的输入 Var1 = Convert.ToDecimal(txtGetal1.Text); Var2 = Convert.ToDecimal(txtGetal2.Text); // 运算逻辑和原来一致,现在可以处理小数相乘了 Uitkomst = Var1 * Var2; // 输出时可以指定小数位数(比如"N2"保留两位),让结果展示更友好 txtUitkomst.Text = $"Uitkomst: {Uitkomst.ToString("N2")}";
可选:用double类型(适合科学计算)
如果你的场景不需要超高精度,也可以用double类型,代码逻辑类似:
double Var1; double Var2; double Uitkomst; Var1 = Convert.ToDouble(txtGetal1.Text); Var2 = Convert.ToDouble(txtGetal2.Text); Uitkomst = Var1 * Var2; txtUitkomst.Text = $"Uitkomst: {Uitkomst.ToString("N2")}";
额外优化:处理非法输入
为了避免用户输入非数字内容导致程序崩溃,建议加上简单的异常处理:
try { decimal Var1 = Convert.ToDecimal(txtGetal1.Text); decimal Var2 = Convert.ToDecimal(txtGetal2.Text); decimal Uitkomst = Var1 * Var2; txtUitkomst.Text = $"Uitkomst: {Uitkomst.ToString("N2")}"; } catch (FormatException) { txtUitkomst.Text = "请输入有效的数字(支持小数)!"; }
内容的提问来源于stack exchange,提问作者SwitxhFX
相关产品推荐
相关产品推荐

