String.Format подавляет десятичные значения? - PullRequest
4 голосов
/ 08 ноября 2010

Я ожидаю, что оба приведенных ниже теста (написанных для NUnit) пройдут, но десятичная версия завершается с ошибкой «System.FormatException: спецификатор формата был недействительным», как и версия Double. Я не могу понять, почему. Может кто-нибудь, пожалуйста, пролить свет?

Спасибо; Дункан

[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" ) );
}

1 Ответ

8 голосов
/ 08 ноября 2010

Выдержка из http://msdn.microsoft.com/en-us/library/fzeeb5cd(v=VS.90).aspx

"Параметром формата может быть любой допустимый стандартный спецификатор числового формата , за исключением D, R и X ...."

Высокий.

...