Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2017, 22:53   #11
alexzk
Форумчанин
 
Регистрация: 12.04.2017
Сообщений: 889
По умолчанию

Код:
// Example program
#include <iostream>
#include <string>

int main()
{
   using byte = char;
   double l = 11111111118.8d;
   byte b = (byte)l;
   std::cout << "Hello, " << (int)b << "!\n";
}
Цитата:
Hello, 127!

Код:
int main()
{
   using byte = int;
   double l = 11111111118.8d;
   byte b = (byte)l;
   std::cout << "Hello, " << (int)b << "!\n";
}
Цитата:
Hello, 2147483647!
Чет я не совсем понимаю, почему тут переполняется.

Ага, trunc так же само работает, и вот его описание

Цитата:
If no errors occur, the nearest integer value not greater in magnitude than arg (in other words, arg rounded towards zero), is returned.
Т.е. ближайшее не большее число по модулю к заданному double есть 128 (в 1 байтном типе) = -1

Вобщем для явы - нада делать так (byte)(long) - т.е. сначала отбросить дробь как long (чтобы число влезло), а потом отбрасывать биты.

Последний раз редактировалось alexzk; 09.07.2017 в 23:14.
alexzk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование к int (java) zhenya.ya Помощь студентам 1 10.12.2011 11:46
Растягивание/сужение формы Ko$ Общие вопросы Delphi 2 30.10.2011 12:53
преобразование чисел(delphi) mineralkaaa Помощь студентам 4 18.05.2010 13:00
Преобразование чисел artemavd Общие вопросы Delphi 15 30.07.2008 15:48
Преобразование дробных чисел Gon Помощь студентам 5 01.05.2008 13:12