爲了限制小數點後的位數,我在我的網頁中做了以下操作。限制小數點後的位數
Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());
我要的小數點後的位數限制爲3。這是如何在這裏完成的單一數據類型?
爲了限制小數點後的位數,我在我的網頁中做了以下操作。限制小數點後的位數
Single nnuma = Convert.ToSingle(dr["num1"].ToString());
Single numb = Convert.ToSingle(dr["num2"].ToString());
我要的小數點後的位數限制爲3。這是如何在這裏完成的單一數據類型?
你可以試試這個。這也將適當精度的最後一位,即0.6666將是0.667
decimal num = 20.123456789m;
Single x = Convert.ToSingle(String.Format("{0:00.000}", num));
正則表達式是永遠的答案;)
var n = Regex.Replace(convertedToSingle.ToString(), @"([^.]*\.\d{0,3}).*", "$1");
-1。雖然很有趣,但這是非常有建設性的答案。 – 2012-03-07 06:12:47
顯然對某些人來說眨眼是不夠的。 (這確實起作用,並不是處理字符串的最糟糕的方式) – sweaver2112 2012-03-07 06:15:46
也許你可以試試這個
nnuma.ToString() 「####」;
numb.ToString(「#。###」);
我得到了一些奇怪的結果。 – sweaver2112 2012-03-07 06:24:55
你正在尋找的操作Math.Round
:
Single unrounded = (Single)dr["num1"]; // change if the DB type is not a single
double rounded = Math.Round(unrounded, 3);
Single roundedSingle = (Single)rounded;
Math.Round
與單個使用時返回了一倍,因此需要之後轉換爲Single(浮動)。作爲一個方面說明:如果小數精度是個問題,您可能需要考慮使用decimal
作爲替代方案。
注意,該過載的Math.Round
執行Banker's Rounding,即0.0005
變得0.000
,但0.0015
0.002
變。如果您需要其他類型的舍入,請改用Math.Round(Double, Int32, MidpointRounding) overload。
非常簡單。只需寫入#限制十進制後的數字。
num.ToString(「0.0000#」) - 限制爲4位;
num.ToString(「0.0#」) - 限制爲1位;
選中此:http://stackoverflow.com/questions/3814190/limiting-double-to-3-decimal-places – 2012-03-07 06:00:49