当前位置: 首页 > 知识库问答 >
问题:

C#三部分格式输出问题

黄丰
2023-03-14

最近,我在这篇文章中读到了关于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));

共有2个答案

赫连子石
2023-03-14
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));
郝修为
2023-03-14

如果希望它们是文字字符串,请将它们括在单引号中。

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

 类似资料:
  • 主要内容:C++ cout成员方法格式化输出,使用流操纵算子格式化输出在某些实际场景中,我们经常需要按照一定的格式输出数据,比如输出浮点数时保留 2 位小数,再比如以十六进制的形式输出整数,等等。 对于学过 C 语言的读者应该知道,当使用 printf() 函数输出数据时,可以通过设定一些合理的格式控制符,来达到以指定格式输出数据的目的。例如 %.2f 表示输出浮点数时保留 2 位小数,%#X 表示以十六进制、带 0X 前缀的方式输出整数。 关于 printf()

  • 问题内容: 我有具有以下结构的Java类(类名并不表示任何东西,我只是在组成它们)。 整理测试实例时,JAXB生成的XML输出是我遇到的问题。XML输出将始终如下所示: 如您所见,某些元素没有正确缩进(即,最深的元素,计数和句点)。这是为什么?我创建JAXB上下文的方式有问题吗?还是JAXB可以递归缩进多少元素有最大限制?我该如何解决?请注意,我也已将JAXB_FORMATTED_OUTPUT设置

  • 好吧,我一直在制作一个表格,允许用户输入某些输入并像excel一样运行。由于这与程序的目的以及它如何显示内容无关,因此我不会在这篇文章中讨论其目的。有没有办法在演示输出中添加更多小数点?我尝试添加 'total.toFixed(3) 这并没有解决问题。然后我尝试了我现在插入的内容。我没有想法。

  • 本文向大家介绍Objective-C语言NSLog输出格式,包括了Objective-C语言NSLog输出格式的使用技巧和注意事项,需要的朋友参考一下 示例 NSLog在Console.app中查看时,通过调用打印的消息具有以下格式: 日期 时间 程序名称 进程ID 线程ID 信息 2016-07-16 08:58:04.681 test [46259 : 1244773] NSLog messa

  • 我们可以看到格式化就是通过格式字符串得到特定格式: format!("{}", foo) -> "3735928559" format!("0x{:X}", foo) -> "0xDEADBEEF" format!("0o{:o}", foo) -> "0o33653337357" 根据使用的参数类型,同样的变量(foo)能够格式化成不同的形式:X, o 和未指定形式。 这个格式化的功能是通过 t

  • 本文向大家介绍Objective-C中NSLog输出格式大全,包括了Objective-C中NSLog输出格式大全的使用技巧和注意事项,需要的朋友参考一下 ?    %@        对象 ?    %d, %i   整数 ?    %u         无符整形 ?    %f          浮点/双字 ?    %x, %X  二进制整数 ?    %o         八进制整数 ?