在某个数字的C#中停止舍入

时间:2010-01-19 05:54:37

标签: c#

所以我希望12.6666667显示为12.6而不是13或12.67 这就是我所做的

Math.Round((5 * (53 - 32)) / 9, 1)

5 个答案:

答案 0 :(得分:3)

Math.Truncate (x * 10.0) / 10.0是一种方法。

使用您的号码:

double x = 5.0 * (53.0 - 32.0) / 9.0;
double result = Math.Truncate (x * 10.0) / 10.0;

请注意,在所有数字的末尾使用“.0”,这可确保在组合时使用浮点数学,而不是整数数学。整数数学将在分割数字时删除任何余数,而浮点数将保留小数点右边的东西,这就是你想要的。

答案 1 :(得分:1)

如果您想要格式化(正如John在评论中建议的那样):

String.Format("{0:0.0}", 12.6666666); // Note: this shows up as 12.7

答案 2 :(得分:1)

d -= d % 0.1; //Where 0.1 is the desired least significant unit.

它应该以你想要的任何精度截断而不是舍入,并且它似乎也适用于负数,总是向零舍入。

答案 3 :(得分:0)

如果您希望12.6666667显示为12.6,则必须截断,而不是舍入;否则你得到12.7到小数点后一位。

我个人通过去((int)(12.6666667 * 10))/ 10来做到这一点。

答案 4 :(得分:0)