簡體   English   中英

String.Format異常

[英]String.Format anomaly

我可能是一個非常大的白痴因為沒有看到非常明顯的東西,但我不知道我現在能檢查什么。

問題是這個。 如果我有這個代碼

decimal d = 45550M;
string s = string.Format("{0}", d);

結果有時是"45550,00"而不是"45550" 我不知道是什么原因造成的。

我能檢查什么? 什么可以導致String.Format不總是表現相同?

十進制值具有特定的縮放因子。 根據您對十進制值執行的操作,縮放系數可能會更改。

十進制數是一個浮點值,由一個符號,一個數值組成,其中值中的每個數字范圍從0到9,以及一個縮放系數,表示浮動小數點的位置,用於分隔積分和小數部分的數值。

除非指定小數位數,否則小數位數默認與小數值的縮放系數相匹配。

縮放因子還保留十進制數中的任何尾隨零。 尾隨零不影響算術或比較運算中的十進制數的值。 但是,如果應用了適當的格式字符串,則ToString方法可以顯示尾隨零

例:

var x = 100m;
var y = x * 1.00m;

string s1 = string.Format("{0}", x); // "100"
string s2 = string.Format("{0}", y); // "100.00"

結果因機器而異,因為您沒有指定用於格式化的顯式文化,因此運行時將使用當前線程文化,這將是機器上配置的線程文化。

string.Format("{0:0}", d); 應始終輸出0位小數(“45550”)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM