【问题标题】:Faking decimal with string format用字符串格式伪造小数
【发布时间】:2018-05-22 18:53:24
【问题描述】:

我目前在一个小型 C# 程序中有以下多头。

long one = 1;
long two = 1005;
long three = 100000005;
long four = 1111112258552;

我想将它们格式化为字符串,以便它们的大小为千分之一,而不用将值除以一千。

例子

Input               :               Output
1                                    0.001
1005                                 1.005
100000005                       100000.005
1111112258552               1111112258.552

我尝试过{0:0,000}{0:0.000} 等字符串格式,但都没有提供我想要的结果。

我怎样才能达到我所追求的结果?任何提示或指示将不胜感激


一些示例代码

long one = 1;
long two = 1005;
long three = 100000005;
long four = 1111112258552;

string format = "{0:0,000}";
string s1 = String.Format(format, one);
string s2 = String.Format(format, two);
string s3 = String.Format(format, three);
string s4 = String.Format(format, four);

Console.WriteLine(s1);
Console.WriteLine(s2);
Console.WriteLine(s3);
Console.WriteLine(s4);

【问题讨论】:

  • “我想把它们格式化成一个字符串,这样它们的大小是千分之一,而不用将值除以一千。” -- 为什么? “我怎样才能达到我想要的结果?” -- 将值除以1000.0
  • (one/1000).ToString() 有什么问题; ?
  • @EdPlunkett 纯粹是因为我对如何实现它感兴趣。

标签: c# string format string-formatting


【解决方案1】:

为您的格式尝试“{0:0,.000}”。

long one = 1;
long two = 1005;
long three = 100000005;
long four = 1111112258552;
string format = "{0:0,.000}";
string s1 = String.Format(format, one);
string s2 = String.Format(format, two);
string s3 = String.Format(format, three);
string s4 = String.Format(format, four);

Console.WriteLine(s1);
Console.WriteLine(s2);
Console.WriteLine(s3);
Console.WriteLine(s4);

控制台输出:

0.001
1.005
100000.005
1111112258.552

https://docs.microsoft.com/en-us/dotnet/standard/base-types/custom-numeric-format-strings#the--custom-specifier-2

【讨论】:

  • 这正是我所追求的。谢谢
猜你喜欢
  • 1970-01-01
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多