【问题标题】:Display Float as String with at Least 1 Decimal Place将浮点数显示为至少有 1 个小数位的字符串
【发布时间】:2011-11-07 16:00:03
【问题描述】:

我想将浮点数显示为字符串,同时确保至少显示一位小数。如果有更多小数,我希望显示这些。

例如: 1 应显示为 1.0 1.2345 应该显示为 1.2345

有人可以帮我处理格式字符串吗?

【问题讨论】:

  • Number formatting 的可能重复项
  • 它不是重复的,我的问题是如何显示最少 1 位小数并且没有最大小数位数。

标签: c# string string-formatting


【解决方案1】:

使用 ToString(".0###########") 与你想要的小数一样多。

【讨论】:

  • 根据IEEE 754 Standard,使用float,您可以在.0 之后使用6 个#s,因为您可以获得大约7 个十进制数字的精度。对于double,您可以使用 15 #s,因为您可以获得大约 16 个十进制数字的精度。
  • @Six:感谢您提供的信息。我自己也会用!
  • @User7116 这是误导。对于真正接近 0 的值,单个的近似范围是 ±1.5 x 10−45,远远超过 7 位。您应该根据当前值IEEE_754 Precisions 检查您的精度。
【解决方案2】:

这个解决方案类似于其他人所说的,但我更喜欢使用 string.Format。 例如:

float myFloat1 = 1.4646573654;
float myFloat2 = 5;
Console.WriteLine(string.Format("Number 1 : {0:0.00##}", myFloat1));
Console.WriteLine(string.Format("Number 2 : {0:0.00##}", myFloat2));

// Newer Syntax
Console.WriteLine($"{myFloat1:0.00##}";
Console.WriteLine($"{myFloat2:0.00##}";

这会产生:

Number 1 : 1.4646
Number 2 : 5.00
Number 1 : 1.4646
Number 2 : 5.00

【讨论】:

    【解决方案3】:

    试试这个:

    doubleNumber.ToString("0.0###");
    

    并且,供您参考(双 ToString 方法):http://msdn.microsoft.com/en-us/library/kfsatb94.aspx

    【讨论】:

    • 这会强制所有内容保留 1 个小数位。所以在这种情况下 1.2345 将显示为 1.2
    • 我实际上是在寻找一种方法来做最小的 1 个小数并且没有最大值
    • 不,它没有:(1.23456789).ToString("0.0#######") = "1.23456789"
    • @KrisTrip:您期望小数位数是多少?在标准计算机上只能表示有限的数量。 (实际上有多少对观众有用?)
    • @Deanna - 最初的格式是“0.0”,它确实强制使用 1 个小数。它是在评论之后编辑的。
    【解决方案4】:
    float fNumber = 1.2345; // Your number
    string sNumber = fNumber.ToString(); // Convert it to a string
    If ((sNumber.Contains(".") == false) && (sNumber.Contains(",") == false)) // Check if it's got a point or a comma in it...
    {
        sNumber += ".0"; // ... and if not, it's an integer, so we'll add it ourselves.
    }
    

    【讨论】:

    • 这打破了国际化(对美国很有效,但对其他人无效)
    • 这可能不起作用,具体取决于本地化设置。 (如果这是一个问题)
    • 是的,我只是想到了这样一个事实,即由于本地化,它无法在我自己的计算机上运行 :p 虽然修复了 if 子句。问题是让它检测它应该添加一个点还是一个逗号有点狡猾。
    • 您真正要寻找的@RobinJ 是NumberDecimalSeparator。然而,这仍然是一个脆弱的选择。
    猜你喜欢
    • 1970-01-01
    • 2018-06-16
    • 2019-11-15
    • 2011-03-10
    • 1970-01-01
    • 2018-07-22
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多