Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Делфи _ Целая часть от числа Int

Автор: Vardes 17.06.2007 0:48

У меня такой вопрос к знатокам.Почему,когда я пытаюсь взять целую часть от числа 3 ( Int(3) ), то результат получаю <1, хотя по идее результатом должно быть то же число 3 ???

Автор: мисс_граффити 17.06.2007 1:03

Можно чуть подробнее - КАК ты это получаешь?

ShowMessage(FloatToStr(Int(3)));
показывает 3.
в консольном режиме
  writeln(Int(3));
тоже выдает 3.
у меня Delphi 6, если что.

Автор: volvo 17.06.2007 1:05

Во-первых, ты не очень корректно делаешь, Int возвращает результат типа Extended...

А потом, покажи, как ты это делаешь... У меня, например, так:

  ShowMessage(FloatToStr(Int(3)));
показывает 3, как положено...

Автор: мисс_граффити 17.06.2007 1:13

Цитата
Во-первых, ты не очень корректно делаешь

почему?
Цитата
function FloatToStr(Value: Extended): string;
, как гласит Delphi Help
вот я ему Extended и передаю...

Автор: volvo 17.06.2007 1:16

Юля, я обращался к автору smile.gif Если б видел твой ответ, ты думаешь, я бы стал дублировать? no1.gif

Автор: Vardes 17.06.2007 3:04

Ну вот пример:

Код

var c,d:extended;
begin
c:=frac(118,6) //дробная часть числа=0,6
d:=int(c*10) //целая часть получается 5,вместо 6

Вот у меня и вопрос, почему при выражении c*10 получается не 6 а 5,9999(9).

Автор: volvo 17.06.2007 4:00

Читай вот тут, например:
http://www2.hursley.ibm.com/decimal/decifaq.html (англ)
про погрешность представления вещественных чисел...

Или погугли на ту же тему, для нахождения информации на русском языке.

Добавлено через 5 мин.
P.S. Кое что есть вот тут:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=374

Автор: мисс_граффити 17.06.2007 7:26

А теперь перечитываем первое сообщение.
Знаешь, 5 и 6 - это совсем не то же самое, что 3 и "число <1". По этой логике вместо 3 может получиться в худшем случае 2. Но 2>1... Как меня учили.

Автор: Vardes 17.06.2007 18:13

Спасибо за информацию,очень помогла.