2017-12-02 85 views
0

所以我想嘗試在C#中顯示貨幣,發現CultureInfo,唯一的事情是,沒有辦法在數字的前面顯示歐元符號,而不是從我所看到和閱讀的內容。如何在使用CultureInfo時在數字的前面顯示歐元符號?

基本上這樣的:

float f = 100.50; 
MoneyAmount.Text = f.ToString("C", new CultureInfo("en-GB")); 

顯示:£100.50

這樣的:

float f = 100.50; 
MoneyAmount.Text = f.ToString("C", new CultureInfo("en-US")); 

會顯示:$ 100.50

但這:

float f = 100.50; 
MoneyAmount.Text = f.ToString("C", new CultureInfo("fr-FR")); 

顯示:100.50€

有沒有辦法爲fr-FR顯示這樣的貨幣:€100.50?

+0

你確定這是正確的問題嗎?如果法國文化決定在價值之後顯示貨幣符號,那麼爲什麼你要另外說呢? –

回答

1

您可以設置NumberFormat.CurrencyPositivePatternCultureInfo實例NumberFormat.CurrencyPositivePattern

float f = 100.50f; 
var culture = new CultureInfo("fr-FR"); 
culture.NumberFormat.CurrencyPositivePattern = 0; 
culture.NumberFormat.CurrencyNegativePattern = 2; 
culture.NumberFormat.CurrencyDecimalSeparator = CultureInfo.InvariantCulture.NumberFormat.CurrencyDecimalSeparator; 
Console.WriteLine(f.ToString("C", culture)); 

打印

€100.50 
+0

我因爲您的示例不適用於負面貨幣而降低了投票權。 – lucky

2

您可以自定義的CultureInfo;

var frenchCulture = new CultureInfo("fr-FR"); 
frenchCulture.NumberFormat.CurrencyPositivePattern = 0; 
frenchCulture.NumberFormat.CurrencyNegativePattern = 2; 
frenchCulture.NumberFormat.CurrencyDecimalSeparator = "."; 
double value = 100.50; 
Console.WriteLine(value.ToString("C", frenchCulture)); // Output : €100.50 
value = -100.50; //For negative currency 
Console.WriteLine(value.ToString("C", frenchCulture)); // Output : €-100.50 
+0

'frenchCulture.NumberFormat.CurrencyPositivePattern = 0; frenchCulture.NumberFormat.CurrencyDecimalSeparator =「」;'會使輸出完全匹配@JonHanna這正是我的回答狀態發生了什麼要求,'€100.50' –

+0

... – Adrian

0

六條與評論說:「把en-FR而不是fr-FR」,所以它看起來是這樣的:

MoneyAmount.Text = f.ToString("C", new CultureInfo("en-FR")); 

謝謝阿德里安,該訣竅。我不認爲en-FR存在,因爲我發現的唯一的東西是fr-FR

+0

'EN-IE'是一種較爲常見的語言環境(因爲在這個國家這種語言更常用),但是如果你真正想要的是「法國的,法國的,法國的,但歐元在前面」,那麼Rainman的答案更接近於。 (我也會小心'浮動'值而不是'小數'的金額)。 –

+0

這是我是誰首先提出的建議,但我已經更新了我的答案有一個更好的方法(不需要變更語言字符串) – Adrian

+0

以及感謝阿德里安:) 也是其對我來說只是爲了更好地改變本地化字符串的原因是什麼我現在所擁有的是一個字符串數組組成的'EN-GB,EN-FR,EN-US'然後BinaryReader在讀取了'什麼貨幣正在used' ID,因此如果其0那麼一切都將有''£,如果1然後''€如果'2'然後'$',它會從陣列中得到相應的CultureInfo。 – JazzEX

0

你可以在你的CultureInfo使用上的NumberFormatInfo類CurrencyPositivePattern 屬性。當使用值2時,它會在數字前改變貨幣符號的位置。

相關問題