Вывести дробную часть положительного числа на Питоне
Дано положительное действительное число X. Выведите его дробную часть.
Вот моё решение, но оно неправильное:
Остаток от деления на единицу, как это ни странно, даст нужный результат:
![]()
Чтобы разделить число на дробную и целые части, можно math.modf() использовать:
print(x — int(x)) — это более точный вариант, но print(a%1) также сработает
![]()
![]()
И округлить по вкусу)))
Из курса ВШЭ решал задание такое вот так:
![]()
Ответом будет 0.1| divmod(n,1) разделит число n на кортеж (4.0, 0.0999999998). Дальше я просто беру число под индексом [1] , это число 0.0999999998, и затем округляю его до десятых. В итоге получается 0.1
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43310
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
PHP Как получить дробную часть числа?
Получить дробную часть числа можно с помощью штатных функций fmod или explode, следующим образом:
В примере две ситуации, первая — если наше число положительное, вторая — если отрицательное. Результат выполнения функций немного отличается, поэтому необходимо выбрать тот, который подходит конечным целям.
Что быстрее? Тестируя каждую функцию, на скорость выполнения, в цикле из 1 000 000 итераций, получим следующий результат:
По результатам теста видно, что функция fmod работает быстрее приблизительно в 10 раз.
Функции для работы с числами в 1С
Для получения целой части числа можно использовать функцию Цел. Для получения дробной части нужно из исходного числа вычесть целую часть:
Округление чисел
Для округления чисел в 1С предназначена функция Окр. Первым параметром передается само число, вторым — количество знаков после запятой, до которых нужно округлить. Если вторым параметром передать отрицательное число, то будет выполнено округление до соответствующего разряда в целой части, начиная с младших разрядов (-1 до десятков, -2 до сотен и т.д.). Третьим параметром указывается режим округления: если 0, то число 1.5 округляется до 1, если 1, то 1.5 округляется до 2.
Округление всегда в большую сторону
Число = 11.2345;
ОкругленноеЧисло = Окр(Число + 0.5, 0, 0); //12
Число = 11.01;
ОкругленноеЧисло = Окр(Число + 0.5, 0, 0); //12
Число = 11.99;
ОкругленноеЧисло = Окр(Число + 0.5, 0, 0); //12
Для получения натурального логарифма используется функция Log, для десятичного — Log10:
Тригонометрические функции
В 1С можно рассчитывать синус, косинус, тангенс, арксинус, арккосинус, арктангенс:
Число = 0;
Арксинус = ASin(Число); //0
Арккосинус = ACos(Число); //
Возведение в степень
Возвести в степень можно двумя функция: Exp — возводит основание натурального логарифма (
2.72) в переданную ей параметром степень; Pow — можно передать как основание, так и показатель степени:
Число = 2;
Степень = 3;
ЧислоВКубе = Pow(Число, Степень); //8
Квадратный корень
Для получения квадратного корня можно воспользоваться функцией Sqrt:
Перевод в десятичную систему счисления
С помощью функций ЧислоИзШестнадцатеричнойСтроки и ЧислоИзДвоичнойСтроки можно получить десятичное число из шестнадцатиричного и двоичного числа. Обе функции параметром принимают строки. Для функции ЧислоИзШестнадцатеричнойСтроки строка должна начинаться с «0x», для функции ЧислоИзДвоичнойСтроки с «0b»:
Получение максимума и минимума
Для получения максимального и минимального числа можно использовать функции Макс и Мин. Параметром можно передать неограниченное количество чисел, через запятую:
Получить дробную часть числа с помощью JavaScript
но у меня возникли проблемы с получением дробную часть. Я пробовал это:
но это не всегда работает правильно.
предыдущий код имеет следующий вывод:
чего мне здесь не хватает?
16 ответов
использовать 1 , а не 2 .
хотя это не минус, так что мы могли бы сделать
вы можете преобразовать в строку, верно?
Как 0.299999999999999998 приемлемый ответ? Если бы я спрашивал, я бы хотел получить ответ .3. Здесь мы имеем ложную точность, и мои эксперименты с floor, % и т. д. показывают, что Javascript любит ложную точность для этих операций. Поэтому я думаю, что ответы, которые используют преобразование в строку, находятся на правильном пути.
Я бы сделал так:
в частности, я использовал 100233.1, и я хотел получить ответ «.1».
самый простой способ сделать это:
к сожалению, это не вернет точное значение. Однако, это легко исправить:
вы можете использовать это, если вы не знаете число десятичных знаков:
вот как я это делаю, и я думаю, что это самый простой способ сделать это:
следующее работает независимо от региональных настроек десятичного разделителя. при условии, что для разделителя используется только один символ.
это не красиво, но это точно.
вы можете преобразовать его в строку и использовать replace метод для замены целочисленной части нулем, а затем преобразовать результат обратно в число:
в зависимости от использования вы дадите потом, но это простое решение также может помочь вам.
Я не говорю, что это хорошее решение, но для некоторых конкретных случаев работает
но это займет больше времени, чем предлагаемое решение @Brian M. Hunt
независимый от языка способ:
обратите внимание, что он корректен только для чисел с одной фрактиоанальной длиной )
если точность имеет значение, и Вам требуются согласованные результаты, вот несколько предложений, которые вернут десятичную часть любого числа в виде строки, включая ведущий «0.». Если вам это нужно, как поплавок, просто добавить var f = parseFloat( result ) в конце.
если десятичная часть равна нулю, будет возвращено «0.0». Null, NaN и неопределенные числа не тестируются.
1. Матрица.сплит
2. Строка.подстрока, строка.метод indexOf
3. Математика.этаж, номер.toFixed, String.метод indexOf
4. Математика.этаж, номер.toFixed, String.сплит
мы видим, что предложение №2 является самым быстрым.
можно использовать parseInt() функция для получения целочисленной части, чем использовать это для извлечения десятичной части
У меня был случай, когда я знал, что все рассматриваемые числа будут иметь только один десятичный знак и хотел получить десятичную часть как целое число, поэтому я использовал такой подход: