Как получить десятичную точку числа? Например:
Если у меня есть 1.5, как получить номер 5?Получить десятичную точку
ответ
int result = static_cast<int>(fmod(number, 1)*10);
EDIT: или проще и, вероятно, быстрее:
int result = static_cast<int>(number*10)%10;
EDIT: чтобы заставить его работать и для отрицательных чисел вы можете сделать:
int result = abs(static_cast<int>(number*10))%10;
вы избили меня вовремя;) – BlackBear
Что делать, если мы не знаем положения десятичной точки, я имею в виду, как решить эту проблему вообще для любого заданного числа с плавающей запятой, например, 12.76, 164.7, 8759.128756 и т. Д.? – Rasoul
@Rasoul: Решение работает в любой ситуации, оно всегда дает вам первую десятичную цифру. –
Скажем, у вас есть x=234.537
floor(x*10)
дает вам 2345
вы тогда просто нужно, чтобы получить остаток от деления на 10
Итак:
int firstDecimal = floor(x*10)%10
'int firstDecimal = floor (x * 10)% 10' даже не компилируется. 'floor' имеет тип с плавающей точкой, но'% 'требует не-float (int, unsigned и т. д.). –
Я не давал ответа на конкретный язык. Это можно использовать практически на любом языке. Возможно, вам понадобится листинг на C++. – nico
Существует хороший простой способ сделать это.
int GetFirstDecimalPlace(float f)
{
const float dp = f - floorf(f); // This simply gives all the values after the
// decimal point.
return static_cast<int>(dp * 10.0f); // This move the value after the decimal
// point to before it and then casts to an
// int losing all other decimal places.
}
Путь работать с отрицательными числами с использованием не макро/вызовы функций:
n < 0 ? (int) (-n * 10) % 10 : (int) (n * 10) % 10
Слишком сложно. Может быть 'static_cast
Вы правы, так проще. И нет причин не для всех абс(), кроме, может быть, по соображениям производительности, но это ничтожно. Я просто хотел показать способ сделать это, используя инструменты, предоставляемые языком, а не библиотекой. Любая причина использовать static_cast
Благодарим вас за ответ. Причиной использования static_int вместо just (int) является отметка мест в программе, в которых выполняются явные приведения. Это делается для удобства чтения. –
- 1. Как поместить десятичную точку?
- 2. Cognos отключил десятичную точку
- 3. Добавить десятичную точку - Javascript
- 4. Сделать десятичную точку целыми числами
- 5. проверить десятичную или точку Java
- 6. Ограничение на одну десятичную точку
- 7. Как удалить десятичную точку с помощью applescript?
- 8. Как удалить десятичную точку в шаблоне XSL
- 9. Преобразование IEEE 754 в десятичную плавающую точку
- 10. gnuplot: Заменить десятичную точку другим символом
- 11. C - strtod() не распознает десятичную точку
- 12. Добавить десятичную точку в последний символ
- 13. javascript jquery удаляет десятичную точку и ноль
- 14. Удалите десятичную точку, например. 99.99 = 9999
- 15. Printf, как вставить десятичную точку для целочисленных
- 16. Как удалить десятичную точку из числа
- 17. Как удалить десятичную точку в jquery
- 18. Функция Val() не распознает общесистемную десятичную точку
- 19. Math.pow ограничение расчета на одну десятичную точку
- 20. Обнаружение, если EditText содержит только десятичную точку
- 21. Вход в HTML-код удаляет десятичную точку?
- 22. Bash заменить среднюю десятичную точку с тире
- 23. Ввод, чтобы разрешить только одну десятичную точку
- 24. Перенаправление вывода добавляет (десятичную) точку. Зачем?
- 25. Как удалить десятичную точку в пандах
- 26. Как преобразовать плавучую точку в десятичную Java
- 27. Невозможно прочитать десятичную точку в сканере
- 28. с плавающей точкой сравнительную игнорирует десятичную точку
- 29. Как скрыть десятичную точку в первенствует
- 30. Сохраненная процедура, возвращающая неверную десятичную точку
К сожалению, я не понимаю вопрос. Какие типы вы хотите обрабатывать? У вас есть двойной, и вы хотели бы десятичное представление после запятой в int? Вы хотели бы иметь 5 сохраненных в int? Почему 5, а не 50? – Benoit
@Benoit, потому что меня интересует только первая цифра после точки. –
... Зачем вам нужна «первая цифра после точки», но больше ничего? –