我有一个SQL表格,其中一列的数据类型是浮点型。有一个外部应用程序会将百分比值写入该列,我会读取这些值并在Web应用程序中显示出来。
我知道如何将小数转换为百分比;通常情况下,我会将它乘以100,但这里有点不同。
数据库中的值看起来像这样:
0.95 <-- DB 5% <-- UI
0.85 <-- DB 15% <-- UI
0.5 <-- DB 50% <-- UI
我曾尝试过
number * percentage / 100
并且
((percentage /100) * value).ToString();
并且
string percentage = string.Format("Percentage is {0:0.0%}", value);
并且
percentage/100m*value
并且
myDecimal.ToString("0.00");
最后,我认为接近了:
Math.Round(myDecimal, 2).ToString("{0.00}");
当然,还有各种字符串格式化的操作,比如
MyDecimal.ToString("P"), .ToString("P1"), etc)
C#中有关格式化、四舍五入和转换百分比的文章:
将百分比转换为最接近的分数, C#中的百分比计算, http://www.dotnetperls.com/percentage。
但是我找不到任何数学计算或内置的c#转换可以给我需要的输出结果。
似乎我需要做的是让0.96的数字减去某个数字,然后再将其乘以100,但0.5始终会使我的数学计算出错...
这似乎是一个常见的转换问题;我在这里缺少什么?
更新
这是我最终使用的解决方案,非常好用!(感谢Reed)
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);
}
链接
为了完整起见,以下是关于 C# 中小数、百分比、双精度和转换的资源列表:
A+
在 C# 中处理百分比
格式化小数以显示百分比值?
将百分比转换为最接近的分数
http://www.dotnetperls.com/percentage
.NET:小数转换为四舍五入的字符串
C# 是否有内置函数将格式化的字符串转换回数字?
A-
将小数格式化为带有特定小数位数的百分比
将小数转换为百分比或移动小数点。如何操作?
如何将百分比字符串转换为双精度浮点数?
B+
两种显示小数的方式
http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx