2010-11-08 30 views
4

Je m'attends à ce que les deux tests ci-dessous (écrits pour NUnit) soient réussis, mais la version Decimal échoue avec "System.FormatException: Spécificateur de format invalide", tout comme une version Double. Je ne peux pas comprendre pourquoi. Quelqu'un peut-il s'il vous plaît faire la lumière?String.Format étrangle sur les valeurs décimales?

Merci; Duncan

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

Chers noms de méthodes jeebus doux – Woot4Moo

+0

duplication possible de [Comment convertir les nombres entre hexadécimal et décimal en C#] (http://stackoverflow.com/questions/74148/how-to-convert-numbers-between-hex-and -decimal-en-c) – NotMe

+0

@ Woot4Moo: aucun argument! @Chris Lively: il est certainement lié, mais les exemples de code dans le lien que vous fournissez apparaissent à FAIL lorsqu'il est utilisé. – Duncan

Répondre