Что правильно по здравому смыслу: (int)blabla * 255.99999999999997 или round(blabla*255)?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Что правильно по здравому смыслу: (int)blabla * 255.99999999999997 или round(blabla*255)?

Сообщение Anonymous »

Недавно я нашел в источниках webkit интересную вещь, связанную с преобразованием цветов (hsl в rgb):

http://osxr.org/android/source/ external/webkit/Source/WebCore/platform/graphics/Color.cpp#0111

Код: Выделить всё

const double scaleFactor = nextafter(256.0, 0.0); // it's here something like 255.99999999999997
// .. some code skipped
return makeRGBA(static_cast(calcSomethingFrom0To1(blablabla) * scaleFactor),
То же самое, что я нашел здесь: http://www.filewatcher.com/p/kdegraphic ... ics-4.6.0/ kolourpaint/imagelib/effects/kpEffectHSV.cpp.html

Код: Выделить всё

(int)(value * 255.999999)
Правильно ли вообще использовать такую ​​технику? Почему бы не использовать что-нибудь прямое, например round(blabla * 255)?
Это особенности C/C++? Как я вижу, строго говоря, он вернет не всегда правильные результаты, в 27 случаях из 100. См. таблицу https://docs.google.com/spreadsheets/d/ ... sp=sharing

Кто-нибудь, пожалуйста, объясните — я думаю, это должно быть что-то базовый.

Подробнее здесь: https://stackoverflow.com/questions/223 ... -roundblab
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»