C# 限制小数点后的位数
为了限制小数点后的位数,我在我的网页上做了以下操作C# 限制小数点后的位数,c#,string-formatting,C#,String Formatting,为了限制小数点后的位数,我在我的网页上做了以下操作 Single nnuma = Convert.ToSingle(dr["num1"].ToString()); Single numb = Convert.ToSingle(dr["num2"].ToString()); 我必须把小数点后的位数限制为3。在单一数据类型中,这是如何实现的?regex始终是答案;) 也许你可以试试这个 nnuma.ToString(“#.#####”) numb.ToString(“#.#####”) 你可以试试
Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());
我必须把小数点后的位数限制为3。在单一数据类型中,这是如何实现的?regex始终是答案;)
也许你可以试试这个
nnuma.ToString(“#.#####”)
numb.ToString(“#.#####”) 你可以试试这个。这也将正确地精确到最后一个数字,即0.6666将是0.667
decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));
您正在寻找的操作是:
Math.Round
与单数一起使用时返回一个double,因此之后需要转换为Single(float)。作为一个旁注:您可能想考虑使用<代码>十进制< /代码> s,如果小数精度是一个问题。
请注意,
Math.Round
的重载执行,即0.0005
变为0.000
,但0.0015
变为0.002
。如果您需要不同类型的舍入,请改用。非常简单。只需写#以限制小数点后的数字
num.ToString(“0.0000#”)限制为4位
num.ToString(“0.0#”)限制为1位 检查一下:显然,对某些人来说,眨眼是不够的。(这确实有效,而且不是处理字符串的最糟糕的方式)我尝试了一下,得到了一些奇怪的结果。
decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));
Single unrounded = (Single)dr["num1"]; // change if the DB type is not a single
double rounded = Math.Round(unrounded, 3);
Single roundedSingle = (Single)rounded;