3 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊
像這樣保留尾隨零是.NET 1.1中引入的,目的是更嚴(yán)格地符合ECMA CLI規(guī)范。
在MSDN上對(duì)此有一些信息,例如here。
您可以如下調(diào)整精度:
Math.Round(或Ceiling,F(xiàn)loor等)以降低精度(c中的b)
乘以1.000 ...(與所需的小數(shù)位數(shù))以提高精度-例如乘以1.0M從a中得到b。

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
您只是看到完全相同的數(shù)據(jù)的不同表示形式。a的精度decimal將縮放為與所需的精度一樣大(在合理范圍內(nèi))。
來自System.Decimal:
十進(jìn)制數(shù)是一個(gè)浮點(diǎn)值,它由一個(gè)符號(hào),一個(gè)數(shù)值(其中值中的每個(gè)數(shù)字都介于0到9之間)以及一個(gè)比例因子(表示將整數(shù)和小數(shù)部分分開的浮點(diǎn)小數(shù)的位置)組成。數(shù)值的
十進(jìn)制值的二進(jìn)制表示形式由一個(gè)1位符號(hào),一個(gè)96位整數(shù)和一個(gè)比例因子組成,該比例因子用于對(duì)96位整數(shù)進(jìn)行除法并指定其哪一部分為十進(jìn)制小數(shù)。縮放因子隱式為數(shù)字10,升至0到28之間的指數(shù)。因此,小數(shù)的二進(jìn)制表示形式為((-2 96到2 96)/ 10 (0到28)) ,其中-2 96 -1等于MinValue,而2 96 -1等于MaxValue。
比例因子還保留十進(jìn)制數(shù)中的所有尾隨零。尾隨零不會(huì)影響算術(shù)或比較操作中小數(shù)的值。但是,如果應(yīng)用了適當(dāng)?shù)母袷阶址?,則可以通過ToString方法顯示尾隨零。

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
我發(fā)現(xiàn)我可以通過乘以或除以1來“篡改”音階。
decimal a = 2m;
decimal c = 2.00000000m;
decimal PreciseOne = 1.000000000000000000000000000000m;
//add maximum trailing zeros to a
decimal x = a * PreciseOne;
//remove all trailing zeros from c
decimal y = c / PreciseOne;
我可以制造出足夠精確的1來按已知尺寸更改比例因子。
decimal scaleFactorBase = 1.0m;
decimal scaleFactor = 1m;
int scaleFactorSize = 3;
for (int i = 0; i < scaleFactorSize; i++)
{
scaleFactor *= scaleFactorBase;
}
decimal z = a * scaleFactor;
- 3 回答
- 0 關(guān)注
- 558 瀏覽
添加回答
舉報(bào)