C# 将浮点数修剪到某个小数点
我需要一种方法将浮点值向下舍入到特定的小数位数。如果切割后的数字大于6,则Math.Round将向上取整,Math.Floor不使用小数点 基本上,如果我有2.566321,我希望代码返回2.56。我知道可以这样做的唯一方法是将浮点值转换为字符串并使用string.format,但如果可能的话,我宁愿不这样做C# 将浮点数修剪到某个小数点,c#,C#,我需要一种方法将浮点值向下舍入到特定的小数位数。如果切割后的数字大于6,则Math.Round将向上取整,Math.Floor不使用小数点 基本上,如果我有2.566321,我希望代码返回2.56。我知道可以这样做的唯一方法是将浮点值转换为字符串并使用string.format,但如果可能的话,我宁愿不这样做 谢谢。一种蛮力方法可能是乘以10^n,其中n是您想要的小数位数,转换为int,进行截断而不是四舍五入,然后转换回float并再次除以10^n 视觉上: 2.566321 * 10^2 =
谢谢。一种蛮力方法可能是乘以10^n,其中n是您想要的小数位数,转换为int,进行截断而不是四舍五入,然后转换回float并再次除以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);
}
我还没有对此进行测试,但这应该会让您继续。我不能在代码中使用示例,因为它们假设您知道浮点数的长度。谢谢,我使用了类似的方法。