将浮点数修剪到一定的小数点

时间:2013-04-02 19:31:51

标签: c#

我需要一种方法将浮点数向下舍入到特定的小数位数。如果剪切后的数字大于6,则Math.Round会向上舍入,而Math.Floor不适用于小数位。

基本上如果我有2.566321,我希望代码返回2.56。我知道可以做到的唯一方法是将float转换为字符串并使用string.format但是如果可能的话我宁愿不这样做。

感谢。

1 个答案:

答案 0 :(得分:2)

蛮力方式可能是乘以10 ^ n,其中n是你想要的小数位数,转换为int(截断而不是舍入),然后转回浮点并除以10 ^ n再次。

目视:

2.566321 * 10^2 = 2.566321 * 100 = 256.6321

(int) 256.6321 = 256

(float) 256 / 10^2 = (float) 256 / 100 = 2.56

快速尝试代码:

public float Truncate(float value, int decimalPlaces) {
   int temp = (int) (value * Math.Pow(10, decimalPlaces));
   return (float) temp / Math.Pow(10, decimalPlaces);
}

我没有对此进行测试,但这应该让你去。