C#中Decimal類型截取保留N位小數(shù)并且不進(jìn)行四舍五入操作
一、問題描述
開發(fā)中,需要使Decimal類型數(shù)據(jù)保留小數(shù)點(diǎn)后的兩位小數(shù)且不需要進(jìn)行四舍五入操作,即直接截取小數(shù)點(diǎn)后面的兩位小數(shù)即可。例如:1.245M --> 1.24,而不是1.25
使用Decimal.Round()方法可以實(shí)現(xiàn)保留Decimal類型數(shù)據(jù)小數(shù)點(diǎn)后的若干位小數(shù),但是該方法會(huì)進(jìn)行四舍五入操作,而不是直接截取。所以,該方法不可取,在網(wǎng)上搜尋一番也沒有找到合適的方法,便自己實(shí)現(xiàn)了一個(gè)截取Decimal類型數(shù)據(jù)小數(shù)點(diǎn)后若干位的方法。
二、詳細(xì)的實(shí)現(xiàn)代碼
using System; namespace CutDecimal { public static class DecimalHelper { public static decimal CutDecimalWithN(decimal d, int n) { string strDecimal = d.ToString(); int index = strDecimal.IndexOf("."); if (index == -1 || strDecimal.Length < index + n + 1) { strDecimal = string.Format("{0:F" + n + "}", d); } else { int length = index; if(n != 0) { length = index + n + 1; } strDecimal = strDecimal.Substring(0, length); } return Decimal.Parse(strDecimal); } } }
三、測試代碼及結(jié)果
static void Main(string[] args) { decimal d = 1.23456789M; for (int i = 0; i <= 10; i++) { Console.WriteLine("{0}", DecimalHelper.CutDecimalWithN(d, i)); } for (int i = 0; i <= 10; i++) { Console.WriteLine("{0}", Decimal.Round(d, i)); } }
測試代碼中,不僅給出了本文實(shí)現(xiàn)方法的測試代碼,還給出了Decimal.Round()方法的測試代碼,最終的運(yùn)行效果如下圖所示。
圖1 運(yùn)行結(jié)果
大伙兒,能看出區(qū)別吧?
相關(guān)文章
C#使用CefSharp自定義緩存實(shí)現(xiàn)
本文介紹了如何使用C#和CefSharp自定義緩存實(shí)現(xiàn)減少Web應(yīng)用程序的網(wǎng)絡(luò)請求,提高應(yīng)用程序性能。首先,本文講解了CefSharp的基本知識和使用方法。然后,詳細(xì)闡述了在CefSharp中實(shí)現(xiàn)自定義緩存的步驟和技巧。最后,通過實(shí)例演示了如何使用自定義緩存功能獲取并展示網(wǎng)頁數(shù)據(jù)2023-04-04C#調(diào)用AForge實(shí)現(xiàn)攝像頭錄像的示例代碼
這篇文章主要介紹了C#調(diào)用AForge實(shí)現(xiàn)攝像頭錄像的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09