Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将浮点数修剪到某个小数点_C# - Fatal编程技术网

C# 将浮点数修剪到某个小数点

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 =

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

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


谢谢。

一种蛮力方法可能是乘以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);
}

我还没有对此进行测试,但这应该会让您继续。

我不能在代码中使用示例,因为它们假设您知道浮点数的长度。谢谢,我使用了类似的方法。