-1

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

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

谢谢。

4

1 回答 1

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);
}

我还没有测试过这个,但这应该让你去。

于 2013-04-02T19:40:41.427 回答