powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Типы Float и Double - близнецы - братья ?
9 сообщений из 9, страница 1 из 1
Типы Float и Double - близнецы - братья ?
    #39306813
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа

Имею продолжение вопроса по прим. типам
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Error {

	public static void main(String[] args) 
	{
		float a = 5080.58f;
		float b =   250.43f;
		System.out.println(a);
		System.out.println(b);
		System.out.println(a+b);
	}

}



Результат
5080.58
250.43
5331.0103 - откуда .........03 ?

Ответ
Оттуда же - откуда и Double ? (ранее писалось)
Верно понимаю ? или можно пояснить разумно

Заранее благодарен !
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39306822
Alexey Tomin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XОттуда же - откуда и Double ? (ранее писалось)
Верно понимаю ? или можно пояснить разумно

Да. У любого числа с плавающий точкой есть эта проблема.
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39306823
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
System.out.println(0.1+0.2);



В консоли будет написано далеко не 0.3. =)
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39306846
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чтобы проверить, можно ли точно представить число, нужно перевести ее в дробь:

0.3 = 3/10
0.5 = 5/10 = 1/2

если знаменатель дроби = 2^n, то число представляется точно (при достаточном кол-ве бит), если нет - то нет. 0.3 точным не будет, а 0.5 будет.

в вашем случае:
5080.58+ 250.43 = 5331.01 = 5331 + 1/100 = 533101/100
100 не является степень двойки, значит такое число не сохраниiь точно в ieee-754

если что, можно степень двойки проверять так: x&(x-1)==0
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39306917
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

Буду бороться .......

P.S. Какие-то нелепости на пустом месте неужели
разработчикам Java системный тип откалибровать сложно
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39306923
natanabrahamjr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

а зачем? есть бигдецимал :) да и откалибровать там не выйдет по ходу это тип такой. специальный. он для другого создан а вы всё пытаетесь его к бухгалтерии приладить.
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39307132
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Гляньте еще strictfp. Хотя в вашем случае, скорей всего не поможет.

Ну и BigDecimal еще.
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39307162
Фотография Паша01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такие числа как 0.3 физически нельзя записать в ячейку, потому что это бесконечное число. Компилятор в последний бит записывает 0 или 1, т.е. обрезает его или прибавляет немного. Вот и получается остаток ...00000003 или ...99999998
...
Рейтинг: 0 / 0
Типы Float и Double - близнецы - братья ?
    #39307166
Partisan M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XБуду бороться .......

P.S. Какие-то нелепости на пустом месте неужели
разработчикам Java системный тип откалибровать сложно

Это у вас проблема на пустом месте. Не мучайте голову. Займитесь чем-нибудь другим.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Типы Float и Double - близнецы - братья ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]