String.format chokes по десятичным значениям?
-
29-09-2019 - |
Вопрос
Я ожидаю, что оба теста ниже (написанные для NUNIT), чтобы пройти, но десятичная версия выходит из строя, «System.formatexception: спецификатор формата был недействительным», как и двойная версия. Я не могу выяснить, почему. Может кто-то, пожалуйста, пролить свет?
Спасибо; Дункан
[Test]
public void Integer_Format_Hex()
{
//Assume
Int32 myValue = 11101110;
//Arrange
//Act
//Assert
Assert.That( String.Format( "0x{0:X8}" , myValue ) , Is.EqualTo( "0x00A963B6" ) );
}
[Test]
public void Decimal_Format_Hex()
{
//Assume
Decimal myValue = 11101110m;
//Arrange
//Act
//Assert
Assert.That( String.Format( "0x{0:X8}" , myValue ) , Is.EqualTo( "0x00A963B6" ) );
}
[Test]
public void Decimal_Format_Hex2()
{
//Assume
Decimal myValue = 11101110m;
//Arrange
//Act
//Assert
Assert.That( myValue.ToString( "X" ) , Is.EqualTo( "00A963B6" ) );
}
Решение
Отказываться от http://msdn.microsoft.com/en-us/library/fzeeb5cd(v=vs.90).aspx.
«Параметр формата может быть любым действительным стандартным числовым спецификаторы цифрового формата За исключением D, R и X...."
Потрясающий.
Не связан с StackOverflow