2013-04-02 3 views
-1

Мне нужен способ округлить поплавок до определенного количества десятичных знаков. Math.Round округляется, если число после разреза больше 6, а Math.Floor не работает с десятичными знаками.Обрезка a Поплавок до определенной десятичной точки

В принципе, если у меня есть 2.566321, я хочу, чтобы код возвращался 2.56. Единственный способ, которым я знаю, что это можно сделать, - это преобразовать float в строку и использовать string.format, но я бы предпочел не делать этого, если это возможно.

Спасибо.

+0

Я не могу использовать примеры в этом коде, поскольку они предполагают, что вы знаете, как долго плавающее число. – TheGateKeeper

ответ

1

Путь грубой силы может быть умножен на 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); 
} 

Я не проверял это, но это должно вам начать работу.

+0

Спасибо, я использовал подобный метод. – TheGateKeeper

Смежные вопросы