将浮点值转换为具有奇怪sql格式的百分比
本文关键字:sql 格式 百分比 转换 | 更新日期: 2023-09-27 17:58:04
我有一个SQL表,其中有一列的数据类型为Float。有一个外部应用程序可以将百分比值写入此列,我读取它们并在web应用程序中显示它们。
我知道如何将小数转换为百分比;通常我会乘以100,但这有点不同。
DB中的值如下所示:
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是50%总是让我的数学运算出错…
这似乎是一种常见的转换;我在这里缺少什么?
更新
这是我最终得到的一个解决方案,效果很好!(感谢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
我相信你会想要:
string percentage = string.Format("Percentage is {0:0.0%}", 1.0 - value);
如果你只想要这个号码:
string percentage = (1.0 - value).ToString("P");
或者,没有小数精度的数字:
string percentage = (1.0 - value).ToString("P0");
尝试:
(1 - currentPercentage) * 100
示例:
(1 - 0.95) * 100 = 0.05 * 100 = 5 [%]
格式:
string.Format("Percentage is {0}%", (1.0 - value) * 100);
或者@Reed建议的最好的 从百分比中减去一(1),然后乘以100。1-.5=.5=50%。1-.95=.05=5%