最近,我在这篇文章中读到了关于C#三部分显示格式的内容:https://diptimayapatra.wordpress.com/2014/01/13/3-part-format-of-numbers-in-c/
3部分格式用于显示正、负和零值数字。字符串格式有三个部分。第一部分对应于阳性试验,第二部分对应于阴性试验。最后一部分用于值为零时。
其结果将为“(+)29.12”
double value1 = 29.12;
string formattingString = $"(+) #.##; (-) #.##; No value provided";
Console.WriteLine(value1.ToString(formattingString));
这样做的结果将是“积极的”
double value1 = 29.12;
string formattingString = $"positve; negative; No value provided";
Console.WriteLine(value1.ToString(formattingString));
但这样做的结果是“2929.12”。为什么会这样呢?
基于以上逻辑,我希望结果应该是29.12
,但最终变成了2929.12
。为什么内部使用.
会变成这种不可预测的输出?
double value1 = 29.12;
string formattingString = $"29.12; Negative; No value provided";
Console.WriteLine(value1.ToString(formattingString));
如果希望它们是文字字符串,请将它们括在单引号中。
double value1 = 29.12;
string formattingString = $"'positve'; 'negative'; 'No value provided'";
Console.WriteLine(value1.ToString(formattingString));
https://dotnetfiddle.net/kevh8b
double value1 = 29.12;
string formattingString = $"'29.12'; 'negative'; 'No value provided'";
Console.WriteLine(value1.ToString(formattingString));
https://dotnetfiddle.net/jurvtm
double value1 = 29.12;
string formattingString = $"29.12; Negative; No value provided";
Console.WriteLine(value1.ToString(formattingString));
您提供了一个正数,因此只有格式字符串的第一部分是相关的。这种情况下的输出是相同的:
formattingString = $"29.12";
文件中说:
所有其他字符:字符不变地复制到结果字符串。
这意味着,29
输出不变,12
输出不变。显然,.
负责附加的29
,它是:
double value1 = 29.12;
string formattingString = $"29.12; Negative; No value provided";
Console.WriteLine(value1.ToString(formattingString));
formattingString = $"29.12";
Console.WriteLine(value1.ToString(formattingString));
formattingString = $".";
Console.WriteLine(value1.ToString(formattingString));