我需要一种方法将浮点数向下舍入到特定的小数位数。如果剪切后的数字大于6,则Math.Round
会向上舍入,而Math.Floor
不适用于小数位。
基本上如果我有2.566321
,我希望代码返回2.56
。我知道可以做到的唯一方法是将float转换为字符串并使用string.format
但是如果可能的话我宁愿不这样做。
感谢。
答案 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);
}
我没有对此进行测试,但这应该让你去。