【问题标题】:convert float to string preserving decimals将浮点数转换为保留小数的字符串
【发布时间】:2017-11-23 04:46:31
【问题描述】:

我的浮点数是 100.0,当我将它转换为字符串时它变成了 100。

rmt.MinNumber = 0.0;
rmt.MaxNumber = 100.0;

rmt.MaxLength = rmt.MinNumber.ToString() + " - " + rmt.MaxNumber.ToString();

我知道我能做到

rmt.MinNumber.ToString("0.0");

但这也是保存在 rmt.Decimal 中的设置所以

如果 rmt.Decimal = 1 然后 rmt.MaxLength = 100.0

如果 rmt.Decimal = 2 然后 rmt.MaxLength = 100.00 等等...

如何将其转换为保留其十进制值的字符串

更新

根据 CodeFuller 的建议

public static class Helper
{
   public static string Format(this float f, int n)
    {
        return f.ToString($"0.{new String('0', n)}");
    }
}

但目前它给了我错误)预期

【问题讨论】:

    标签: c# mysql entity-framework


    【解决方案1】:

    您仍然可以使用ToString("0.0") 方法,但您应该在运行时构建格式说明符,因为点后的位数会有所不同。

    考虑使用以下扩展方法:

    public static class FloatExtensions
    {
        public static string Format(this float f, int n)
        {
            // return f.ToString($"0.{new String('0', n)}");
            return f.ToString("0." + new String('0', n));
        }
    }
    
    rmt.MaxLength = rmt.MinNumber.Format(rmt.Decimal)
    

    【讨论】:

    • $"0.{new String('0', n)}" 编译器还说意外字符'$'
    • 嘿你的意思是@而不是$?
    • 这是一个自 C# 6.0 起可用的字符串插值。可能您正在使用一些以前的版本。检查我的答案更新,它应该适合你。
    • 酷!太棒了!
    猜你喜欢
    • 2019-11-15
    • 2011-11-25
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多