在小数点之前获得没有数字的浮点百分比

时间:2017-07-18 10:25:41

标签: c#

转换浮点数的最佳方法是什么:

0.433432 -> 0.43
0.672919 -> 0.67
3.826342 -> 0.82
6.783643 -> 0.78

我有一个float数组,想要转换它包含的所有值 谢谢:))

3 个答案:

答案 0 :(得分:1)

您希望获得小数部分,截断直至两位数。如果值,您可以像这样实现:

 private static double Solution(double value) {
    return (long)((value - (long)value) * 100) / 100.0;
 }

测试:

 double[] test = new double[] {
   0.433432,
   0.672919,
   3.826342,
   6.783643, };

 var result = test
   .Select(item => $"{item} -> {Solution(item)}")
   .ToArray();

 Console.Write(string.Join(Environment.NewLine, result));

结果:

 0.433432 -> 0.43
 0.672919 -> 0.67
 3.826342 -> 0.82
 6.783643 -> 0.78

修改: Solution方法中发生的事情:

  • value - (long) value - 删除整数部分

  • (long) ((...) * 100) - 扩展和截断

  • () / 100.0 - 缩小版

如果我们有,1234.5789这三个阶段将是:

  • 0.5789 - 删除整数部分

  • 57 - 向上扩展并截断

  • 0.57 - 缩小版

答案 1 :(得分:0)

您可以减去整数值。

for(int i = 0; i < array.Length; i++)
    array[i] -= ((int)array[i]);

答案 2 :(得分:0)

value = Math.Truncate(100 * value) / 100;

OR

decimal result = TruncateDecimal(0.433432, 2);