使用奇怪的sql格式将float转换为百分比

noc*_*ier 4 c# decimal type-conversion percentage

我有一个SQL表,其中一列的数据类型为Float.有一个外部应用程序将百分比值写入此列,我读取它们并在Web应用程序中显示它们.

我理解如何将十进制转换为百分比; 通常我会乘以100,但这有点不同.

DB中的值如下所示:

 0.95  <-- DB  5%  <-- UI
 0.85  <-- DB  15% <-- UI
 0.5   <-- DB  50% <-- UI
Run Code Online (Sandbox Code Playgroud)

我试过了

number * percentage / 100
Run Code Online (Sandbox Code Playgroud)

((percentage /100) * value).ToString();
Run Code Online (Sandbox Code Playgroud)

 string percentage = string.Format("Percentage is {0:0.0%}", value);
Run Code Online (Sandbox Code Playgroud)

 percentage/100m*value
Run Code Online (Sandbox Code Playgroud)

 myDecimal.ToString("0.00");
Run Code Online (Sandbox Code Playgroud)

最后,我认为很接近:

Math.Round(myDecimal, 2).ToString("{0.00}");
Run Code Online (Sandbox Code Playgroud)

当然还有各种字符串格式化的东西

 MyDecimal.ToString("P"), .ToString("P1"), etc)
Run Code Online (Sandbox Code Playgroud)

有关C#中格式化,舍入和转换百分比的文章:

将百分比转换为最接近的分数, c#中的工作百分比, http://www.dotnetperls.com/percentage,

但我不能为我的生活找到一个数学计算或内置c#转换给我我需要的输出.

看起来我需要做的是将0.96位数减去一些数字,然后再将其乘以100,但0.5为50%总是抛出我的数学......

这似乎是一种常见的转换; 我在这里缺少什么?

UPDATE

这是我最终得到的解决方案,效果很好!(谢谢里德)

            var li = new List<Object>();
        var retVal = new List<string>();

        li.Add(.5);       // 50%
        li.Add(.95);      // 95%
        li.Add(.85);      // 85%
        li.Add(0.87813);  // 12.18700%

        foreach (var o in li)
        {
            var value = Convert.ToDouble(o);
            string percentage = string.Format("Percentage is {0:0.0%}", 1.0 - value);

            retVal.Add(percentage);
        }
Run Code Online (Sandbox Code Playgroud)

链接

为了完整起见,这里有一个非常简明的C#中的小数,百分比,双打和转换资源列表:

A +

c#中的工作百分比
格式为百分比值的小数?
将百分比转换为最接近的分数
http://www.dotnetperls.com/percentage
.NET:十进制到圆形字符串
C#是否有内置函数将格式化的字符串转换回数字?

一个-


将十进制 格式化为具有特定小数位的百分比将十进制转换为百分比或移位小数位.如何
将百分比字符串转换为双倍?

B +

两种显示小数的方法
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx

Ree*_*sey 5

我相信你想要:

string percentage = string.Format("Percentage is {0:0.0%}", 1.0 - value);
Run Code Online (Sandbox Code Playgroud)

如果你只想要这个数字:

string percentage = (1.0 - value).ToString("P");
Run Code Online (Sandbox Code Playgroud)

或者,没有小数精度的数字:

string percentage = (1.0 - value).ToString("P0");
Run Code Online (Sandbox Code Playgroud)

  • @nocarrier你可以这样做:`double value = 1.0 - (double.Parse(percentage.Replace("Percentage is","").Replace("%",""))/ 100.0);` (2认同)