这是我的代码:
string myValue = "0,203";
decimal.TryParse(myValue, NumberStyles.Any, CultureInfo.CurrentCulture, out myValueAsDecimal;
Run Code Online (Sandbox Code Playgroud)
...
myValueAsDecimal is 0.203 now
Run Code Online (Sandbox Code Playgroud)
有没有可能myValueAsDecimal有0,203之后TryParse或内部表示decimal总是0.203我需要格式化GUI输出,如果我需要0,203?
在TryParse之后myValueAsDecimal有可能有0,203
不,它只是一个数字 - 它没有文本格式的概念.要以更简单的类型考虑另一种方式,请考虑以下两行代码:
int x = 0x100;
int y = 256;
Run Code Online (Sandbox Code Playgroud)
这两个值是否相同?是的,它们代表相同的数字.如果转换的值x,并y默认为字符串,他们都将最终成为"256" -但他们都最终成为"100",如果你请求一个十六进制表示.
区分变量的实际值和文本表示很重要.很少有类型(我无法立即考虑)携带有关文本表示的信息 - 例如,a DateTime可以从各种格式解析,但没有原始文本格式的"记忆".它只是一个日期和时间,然后可以根据任何格式进行格式化.
如果你需要保持"十进制数和它最初表示的文化"的想法,那么你应该为该配对创建自己的类或结构.它decimal本身并不存在.