Почему немецкое и швейцарское число отличается от строкового преобразования? - PullRequest
6 голосов
/ 14 ноября 2011

Я просто пытаюсь преобразовать число с плавающей точкой, которое я прочитал из Exel, в строку с использованием запятой в качестве десятичного разделителя и двух цифр после запятой.Я пробую следующий код

$a = 707.63790474
$l = New-Object System.Globalization.CultureInfo("de-CH")
"CH: " + $a.ToString("F2", $l)


$l = New-Object System.Globalization.CultureInfo("de-DE")
"DE: " + $a.ToString("F2", $l)

$l = New-Object System.Globalization.CultureInfo("en-US")
"US: " + $a.ToString("F2", $l)

и получаю

CH: 707.64
DE: 707,64
US: 707.64

Но, насколько мне известно, запятая используется в качестве десятичного разделителя в Швейцарии, если только она не является валютой, см.http://en.wikipedia.org/wiki/Decimal_mark. Я что-то пропустил?

Ответы [ 2 ]

2 голосов
/ 14 ноября 2011

Введите (New-Object System.Globalization.CultureInfo("de-CH")).numberFormat, чтобы получить числовую информацию формата для de-CH

. Вы получите:

CurrencyDecimalDigits    : 2
CurrencyDecimalSeparator : .
IsReadOnly               : False
CurrencyGroupSizes       : {3}
NumberGroupSizes         : {3}
PercentGroupSizes        : {3}
CurrencyGroupSeparator   : '
CurrencySymbol           : Fr.
NaNSymbol                : n. def.
CurrencyNegativePattern  : 2
NumberNegativePattern    : 1
PercentPositivePattern   : 1
PercentNegativePattern   : 1
NegativeInfinitySymbol   : -unendlich
NegativeSign             : -
NumberDecimalDigits      : 2
NumberDecimalSeparator   : .
NumberGroupSeparator     : '
CurrencyPositivePattern  : 2
PositiveInfinitySymbol   : +unendlich
PositiveSign             : +
PercentDecimalDigits     : 2
PercentDecimalSeparator  : .
PercentGroupSeparator    : '
PercentSymbol            : %
PerMilleSymbol           : ‰
NativeDigits             : {0, 1, 2, 3...}
DigitSubstitution        : None

. Как видите, NumberDecimalSeparator и CurrencyDecimalSeparator имеют значение.

2 голосов
/ 14 ноября 2011

Нет, похоже, Швейцария использует . в качестве десятичного разделителя (как это делают обычные люди), поэтому это правильный вывод:

http://publib.boulder.ibm.com/infocenter/forms/v3r5m1/index.jsp?topic=%2Fcom.ibm.form.designer.locales.doc%2Fi_xfdl_r_formats_de_CH.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...