可能重复:
C# Double - ToString() formatting with two decimal places but no rounding
我正在使用浮动数字,我希望获得小数点数而不进行任何舍入。
对于Eg。 float x = 12.6789 如果我想要最多2个小数点,那么我应该得到(x = 12.67)和NOT(x = 12.68),这在舍入发生时会发生。
Plz建议哪种方法最好。
答案 0 :(得分:8)
您应该可以使用Math.Truncate():
decimal x = 12.6789m;
x = Math.Truncate(x * 100) / 100; //This will output 12.67
答案 1 :(得分:3)
你可以通过施放来实现这一点:
float x = 12.6789;
float result = ((int)(x * 100.0)) / 100.0;
答案 2 :(得分:1)
可能有一个框架调用,但你可以写一个像:
//Scale up, floor, then round down.
//ie: 1.557
// scaled up: 155.7
// floord: 155
// scaled down: 1.55
public float MyTruncate(float f, int precision){
float scale = precision * 10;
return (Math.Floor(f * scale)) / scale;
}