Показано с 1 по 2 из 2
  1. #1
    Юзер
    Регистрация
    03.06.2016
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Хранение float в памяти

    Товарищи программисты.
    Почему так?
    (int)( (0.1 + 0.5 )*10 ) = 6
    (int)( (0.1 + 0.6 )*10 ) = 7
    (int)( (0.1 + 0.7 )*10 ) = 7

  2. #2
    Юзер
    Регистрация
    20.04.2015
    Сообщений
    1
    Сказал(а) спасибо
    0
    Поблагодарили 0 раз(а) в 0 сообщениях

    По умолчанию Re: Хранение float в памяти

    Разве не должно быть так?!

    (int)( (0.1 + 0.5 )*10 )

    Действие 1: складываем 0.1 + 0.5 получаем 0.6 ("по дефолту" имеем тип double);
    Действие 2: умножаем на 10, получаем 6.0 (тип все еще double)
    Действие 3: "кастим" (преобразовываем) в тип int, получается 6 (а не 6.0).


    Никакого float'а тут нет. Если хотите литерал для float, то используйте суффикс f (можно заглавную): 6f или 6.0f

    P.S. Поздно посмотрел на дату темы. Может кому еще пригодится...

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •