2013-03-07 5 views
-2

Я ищу реализацию floor (x) в C#, чтобы он соответствовал версии C++.C# эквивалент функции «floor» C++

floor of 2.3 is 2.0 
floor of 3.8 is 3.0 
floor of -2.3 is -3.0 
floor of -3.8 is -4.0 

Поскольку C++ рецензент будет проверять свой код, то, что реализация floor разумно в C# так, что он не вытаскивать его (последние оставшиеся волосы)?

+0

Почему вы не указали google 'C# floor'? –

+0

@KirkWoll Глупое упущение с моей стороны. Я просмотрел историю своего браузера и думал, что искал его, но был перегружен [перевод этого с C++ на C#, который я пропустил этот шаг] (http://stackoverflow.com/q/ 15213853/328397) – LamonteCristo

ответ

6

Вы можете использовать класс Math. Есть много перегружена формы Math.Floor

  1. Math.Floor(Double)
  2. Math.Floor(Decimal)

Простое Использование:

Math.Floor(2.3) // == 2.0 
Math.Floor(3.8) // == 3.0 
Math.Floor(-2.3) // == -3.0 
Math.Floor(-3.8) // == -4.0 
3

Просто используйте Math.Floor. Он округляется до отрицательной бесконечности, как и C++ floor. От the documentation:

Поведение этого метода соответствует стандарту IEEE 754, раздел 4. Этот вид округления иногда называют округлением к отрицательной бесконечности. Другими словами, если d положительно, любая дробная составляющая усекается. Если d отрицательно, наличие какой-либо дробной составляющей заставляет его округлять до меньшего целого.

1

Математическая библиотека делает то, что вам нужно. Документы: here. Что еще более важно, термин «пол» определяется как всегда вести себя так, как вы описываете. См. Wikipedia для получения дополнительной информации о mathematical floor function

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