简体   繁体   中英

How do I make decimal.TryParse keep the trailing zeros?

Currently if I do this

decimal d;
temp = "22.00";
decimal.TryParse(temp, NumberStyles.Any,  CultureInfo.InvariantCulture, out d);

Then 'd' turns out as 22. Is there any way I can ensure that trailing zeros don't get wiped out ?

FYI I am using .net 4.0

The same code works for me (displaying 22.00, and 22.000 if I change the input string to "22.000"), and as you've specified the invariant culture it shouldn't depend on our respective cultures.

How are you examining the value afterwards? If it's in the debugger, I wouldn't be surprised if that were to blame... if you print out d.ToString() what does that show?

For example:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        decimal d;
        decimal.TryParse("22.00", NumberStyles.Any,
                         CultureInfo.InvariantCulture, out d);

        // This prints out 22.00
        Console.WriteLine(d.ToString(CultureInfo.InvariantCulture));
    }
}

我会说不,并且只显示带有尾随零的十进制格式,因为22仍然是22.00。

Then 'd' turns out as 22

And you expect to turn into what? The zeros are still there:

Console.WriteLine(d);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM