Здрасти ,имеется следущая проблемма:есть ,например, число 5.8 вопрос в том как "округлить" его до 5 в программе ? Оно может быть непредсказуемо, в зависимости от условия задачи.И 5.7 и 8.9 и 6.1 и 9.2 и.... а?
Это теперь называется "округление"? Вообще-то это больше похоже на "отбрасывание дробной части": смотри в сторону Trunc(X)
Можно-ли сделать так:в числе после точки есть значения .если в них присутствует цифра 6 и больше то округляем число и вычитаем из него 1,ежели нет то просто округляем..........вопрос следуйщий.........как работать с тем что после точки??
А теперь внимательно перечитай предыдущий пост, и объясни мне, что проще:
1) взять дробную часть, проверить, присутствует там 6 или нет (кстати, та еще проверочка может получиться, попробуй, развлекись на досуге, скажем, в дробной части 10.10127 тоже присутствует число больше 6, и что?), после чего округлить число и в случае положительного ответа на предыдущий вопрос еще вычесть 1,
или
2) воспользоваться той функцией, которую тебе уже посоветовали, и сразу отбросить дробную часть...
И заодно объясни, зачем ты задаешь вопросы, и после получения ответа говоришь, что "подумал и надо делать вот так..." Тебе никогда не казалось, что думать надо ДО того, как задавать вопрос?
volvo!
1)мне нужно получить дробную часть, вычитывая из числа его-же только целое значение,притом оно не может быть на единицу больше чем целое с отбросом дробной части неокругленное число над которым выполняется расчёт;
чтоб было понятней вот пример:
дано число 4.567
Если мы его округлим то получим число пять,а число пять
будет по смыслу моей задачи неправильно ,поскольку
должно получиться число
четыре(из дроби вычитается дробная часть)
значит, мы вычитаем из
него один...но вдруг это будет число
4.289 и что, мы будем его округлять
и вычитать из него единицу?конечно нет .
вот я и спрашиваю как их различать.
P.S. чем я кого-то обидел?просто я не умею быстро отладно думать.
Есть функция round - округляет
Есть функция trunc - отбрасывает дробную часть
Есть функция frac - даёт дробную часть
trunc и frac с отрицательными числами с математической точки зрения работают неправильно:
trunc(-1.5) = -1 (на самом деле это -2)
frac(-1.5) = -0.5 (на самом деле это 0.5, и вообще дробная часть не может быть меньше нуля)
Да, в Паскале даже -1 mod 4 = -1 (отрицательный остаток от деления!!! Причём это похоже специально так сделали, потому что word(-1) mod 4 = 3, то есть на битовом уровне должно быть 3)
можно делать так x := frac(x); if x<0 then x := x + 1;
тогда будет правильно с точки зрения математики
VOLVO!!!!Sorry............