使Decimal型別資料保留N位小數且不進行四捨五入操作(C#)
一 問題描述
開發中,需要使Decimal型別資料保留小數點後的兩位小數且不需要進行四捨五入操作,即直接擷取小數點後面的兩位小數即可。例如:1.245M --> 1.24,而不是1.25
使用Decimal.Round()方法可以實現保留Decimal型別資料小數點後的若干位小數,但是該方法會進行四捨五入操作,而不是直接擷取。所以,該方法不可取,在網上搜尋一番也沒有找到合適的方法,便自己實現了一個擷取Decimal型別資料小數點後若干位的方法。
二 詳細的實現程式碼
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); } } }
三 測試程式碼及結果
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));
}
}
測試程式碼中,不僅給出了本文實現方法的測試程式碼,還給出了Decimal.Round()方法的測試程式碼,最終的執行效果如下圖所示。
圖1 執行結果
大夥兒,能看出區別吧?
相關推薦
使Decimal型別資料保留N位小數且不進行四捨五入操作(C#)
一 問題描述 開發中,需要使Decimal型別資料保留小數點後的兩位小數且不需要進行四捨五入操作,即直接擷取小數點後面的兩位小數即可。例如:1.245M --> 1.24,而不是1.25 使用D
javascript 保留兩位小數 (且不四捨五入)
保留兩位小數且不四捨五入:方法一: var a = 2.461; var b = ( parseInt( a * 100 ) / 100 ).toFixed(2); console.log(b); // 2.46方法二: var a = -1
decimal 保留n位小數
decimal 保留2位小數2008-05-07 10:52Decimal a=10; DeciMal b=3; Decimal c=a/b; 得出 3.3333333333333333333333333 而這裡我只想得出3.33 我只能用Convert.ToDecima
double型別的資料保留2位小數
//使用 DecimalFormat 類(import java.text.DecimalFormat;) double o = (10+11*0.8+14*0.5)/87*100; System.out.println(new DecimalFormat(".##").format(o
頁面中使用fmt:formatNumber標簽保留n位小數四舍五入問題
inf 數值 AC ber pattern 小數位 min BE digi 在頁面中 對某一數值進行保留n位小數的操作JSTL的formatNumber 標簽進行數值的四舍五入時,發現它竟然使用的是"4舍6入5奇偶"的算法. 要實現"四舍五入"的算法,只需要在原有值的基礎上
Jquery 保留N位小數,且千位以上用","號隔開
s:資料Value n:保留小數位數 function jinEFmoney(s, n) { if (s == '' || s == null) return '0.00'; n = n > 0 && n <= 20 ? n : 2; s =
iOS 怎樣實現最多保留n位小數
@implementation NSNumber (TwoDecimal) - (NSString *)twoDecimalString { NSNumberFormatter *formatter = [[NSNumberFormatter allo
JavaScript 保留n位小數的toFixed()函式
JavaScript中,要想保留一個小數後的n位小數,通常會用到toFixed()函式來實現,注意:遵守 四捨五入 法則 eg: <script type="text/javascript"&
C#中保留N位小數的幾種方法(轉)
1.只要求保留N位不四舍5入 float f = 0.55555f; int i =(int)(f * 100); f = (float)(i*1.0)/100;//保留小數後2位 2.保留N位,四捨五入 de
JS-滑鼠移出input,保留兩位小數且新增千分位分隔符
程式碼如下: 滑鼠移出input後保留兩位小數,新增千分位分隔符<input class="credit" type="text" value="0.00"/> <script type="text/javascript"> //千分位的分隔符 function t
Android double保留兩位小數:擷取 和 四捨五入
方式一: BigDecimal.setScale()方法用於格式化小數點 setScale(2);//表示保留2位小數,預設用四捨五入方式 setScale(2,BigDecimal.ROUND_
Java中四捨五入保留兩位小數或不保留小數
//四捨五入,不保留小數; float gr = 8;float gc = 3;DecimalFormat df1 = new DecimalFormat("0");//格式化小數,不足的補0 Str
資料結構——二叉樹:基本二叉樹(C++)
內容概要: 二叉樹相關概念 簡單二叉樹模板類的實現:二叉樹的遍歷、計算高度、計算節點數目 注意事項 一、二叉樹相關概念: 第一部分: 節點(node),根節點(root),左子樹(left subtree),右子樹(right suntree),子節點
ALGO-107演算法訓練 9-7連結串列資料求和操作 (c++)
演算法訓練 9-7連結串列資料求和操作 時間限制:1.0s 記憶體限制:512.0MB 讀入10個複數,建立對應連結串列,然後求所有複數的和。 樣例輸入 1 2 1 3 4 5 2
用遞迴方法求n階勒讓德多項式的值(C++)
#include <iostream> using namespace std; float p(float,float); int main() {float n,x;cin>>n>>x;cout<<p(n,x)<&l
【轉載】SAP的貨幣資料型別保留4位小數
怎樣讓SAP的貨幣資料型別保留4位小數SAP資料字典中的貨幣類據型別為CURR,只保留2位小數,而我們在實際開發時,卻經常需要保留4小數。若僅僅是顯示報表倒問題不大,內表中可以使用P型別,隨便自己定義多少位小數點。但筆者的報表需要儲存至資料表中,資料表的資料型別不能使用P型別
資料型別轉換 text 轉 double 再保留兩位小數
round(rp.num/cast(si.value as DECIMAL),2) as price java 後臺資料 double 保留兩位小數: BigDecimal bd = new BigD
設定EntityFramework中decimal型別資料精度問題(EF預設將只會保留到2為精度)
原文:設定EntityFramework中decimal型別資料精度 EF中預設的decimal資料精度為兩位數,當我們資料庫設定的精度大於2時,EF將只會保留到2為精度。 e.g. 2.19990將會被儲存為2.20 1.解決方案一是網上找到常見的方法為重寫DbContext的OnMode
asp.net的decimal保留兩位小數
C#的decimal保留兩位小數 方法一: decimal d = 46.28111; string dStr = Math.Round( d,2 ).ToString(); 結果:dStr = 46.28
ACMNO.16用迭代法求 。求平方根的迭代公式為: X[n+1]=1/2(X[n]+a/X[n]) 要求前後兩次求出的得差的絕對值少於0.00001。 輸出保留3位小數 輸入 X 輸出 X的
題目描述 用迭代法求 。 求平方根的迭代公式為: X[n+1]=1/2(X[n]+a/X[n]) 要求前後兩次求出的得差的絕對值少於0.00001。 輸出保留3位小數 輸入 X 輸出 X的平方根 樣例輸入 4 樣例輸出 2.000 來