如何为双精度值定义字符串格式,使其显示值就像被除以一样?

Beh*_*oth 0 .net c# string-formatting

假设我有一个double = 99.00;. 如何定义一个字符串format,该字符串将输出一个字符串,就像"0.099"使用double.ToString(format);. 正如你所看到的,我想格式化我的双精度,就好像它被除以一样1000

我知道我可以做这样的事情:

double number = 99.00;
string formattedNumber = (number / 1000).ToString("0.000");
Console.WriteLine(formattedNumber); // Output: "0.099" 
Run Code Online (Sandbox Code Playgroud)

然而,有没有一种方法可以直接定义格式而不需要任何额外的计算呢?

D S*_*ley 6

您可以直接在小数点左侧使用缩放格式化程序 ( ,)将数字缩小 1,000:

double number = 99.00;
string formattedNumber = number.ToString("0,.000");
Console.WriteLine(formattedNumber); // Output: "0.099" 
Run Code Online (Sandbox Code Playgroud)

您可以使用多个逗号按 1,000 的幂进行缩放(例如,,将除以 1,000,000)

格式化程序通常用于以不同数量级显示数据(例如以数千或数百万显示数据以节省空间)

尽管除非您只能指定格式化字符串而不更改数据(例如在报告或表单中),否则我只会在显示之前缩放数字并使用标准格式化字符串。除非您经常使用,否则上面的格式化字符串对数字的缩放可能并不明显。

  • 天哪,我已经多次阅读该文档,但从未见过缩放方面。评论已删除:) (3认同)
  • 但乔恩斯基特说“不,没有。”所以你一定是在撒谎。;) (2认同)
  • 这里有关于这种愤怒的文档:https://learn.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#the--custom-specifier-2 (2认同)