powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Машинный нуль.
19 сообщений из 19, страница 1 из 1
Машинный нуль.
    #33348716
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажите, что знаете. Как это победить?

Если кто не знает, что это такое, то скомпиляйте и исполните сие и всё поймёте.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
/***************************************************************************
 *   Copyright (C) 2005 by Miha                                            *
 *   sarin@sarin                                                           *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
	
	float zero =  1 ;
	double doubleZero =  1 ;
	long double longDoubleZero =  1 ;
	int i =  0 ;
	
	while ( 1  < ( 1  + zero)){
		i++;
		zero = zero /  2 ;
	}

	printf("size of \"zero\": %d\nzero: %e\titerations: %d\n", sizeof(zero), zero, i);
	
	while ( 1  < ( 1  + doubleZero)){
		i++;
		doubleZero = doubleZero /  2 ;
	}

	printf("size of \"doubleZero\": %d\ndoubleZero: %e\titerations: %d\n", sizeof(doubleZero), doubleZero, i);
	
	while ( 1  < ( 1  + longDoubleZero)){
		i++;
		longDoubleZero = longDoubleZero /  2 ;
	}

	printf("size of \"longDoubleZero\": %d\nlongDoubleZero: %e\titerations: %d\n", sizeof(longDoubleZero), longDoubleZero, i);

  return EXIT_SUCCESS;
}

...
Рейтинг: 0 / 0
Машинный нуль.
    #33348760
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чего победить-то?
Машинный нуль -- это фундаментальное свойство машинных вычислений с плавающей точкой. Зависит от точности типа данных. Обычно никому не мешает, так как никто с такими числами не работает. Накопление погрешностей вычислений - отдельный вопрос.
При компиляции на компиляторах Microsoft результаты для double и long double будут совпадать. (в MSDN описано, что эти типы эквивалентны).
При компиляции на Borland long double будет 10 байт (собственно истинная точность сопроцессора и есть 80 бит).
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Машинный нуль.
    #33348850
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я компилял на gcc.
Вот результаты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
size of "zero":  4 
zero:  5 .421011e- 20       iterations:  64 
size of "doubleZero":  8 
doubleZero:  5 .421011e- 20         iterations:  128 
size of "longDoubleZero":  12 
longDoubleZero: - 0 .000000e+ 00    iterations:  16319 

С такими числами приходится работать при численном решении разной лыбуды.

Откуда появляется эта байда?

Расскажите, кто что знает.
...
Рейтинг: 0 / 0
Машинный нуль.
    #33349925
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinЯ компилял на gcc.
Вот результаты:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
size of "zero":  4 
zero:  5 .421011e- 20       iterations:  64 
size of "doubleZero":  8 
doubleZero:  5 .421011e- 20         iterations:  128 
size of "longDoubleZero":  12 
longDoubleZero: - 0 .000000e+ 00    iterations:  16319 

С такими числами приходится работать при численном решении разной лыбуды.

Откуда появляется эта байда?

Расскажите, кто что знает.

Для вещественных чисел используется двоичная система счисления и принята форма представления чисел с плавающей точкой X = M2^P, M = +-(k1*2^-1 + k2*2^-2+...+kn*2^-t). Здесь M - мантисса, p-целое число называемое двоичным порядком. Количество t цифр, которое отводится для записи мантиссы, называется разрядностью мантиссы. Диапазон представления чисел в ЭВМ ограничен конечной разрядностью мантиссы и значением числа p. Все представимые числа на ЭВМ удовлетворяют неравенствам: 0 < X0 < X < Xбеск, где x0=2^(-pmax+1), Xбеск = 2^Pmax. Все числа, по модулю большие Xбеск, не представимы на ЭВМ и рассматриваются как машинная бесконечность. Все числа, по модулю меньшие X0, для ЭВМ не отличаются от нуля и рассматриваются как машинный нуль. Машинным эпсилон называется относительная точность ЭВМ, то есть граница относительной погрешности представления чисел в ЭВМ. Нашли вы не машинный нуль, а машинный эпсилон.

Если вы при численных методах получаете такие числа, значит методы применять другие, так как в результате погрешности превзойдут значимость результатов. Такое может появляться на плохо обусловленных матрицах, тогда матрицы приводятся к более "нормированному" виду.
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350684
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое. Где почитать про представление вещественных чисел в машине?
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350693
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё вопрос:
Код: plaintext
1.
2.
size of "longDoubleZero":  12 
longDoubleZero: - 0 .000000e+ 00    iterations:  16319 
это ему разрядов не хватило? Фактически компуктер сказал, что машинный эпсилон = 0.
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350701
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Sarin!
Ты пишешь:

SarinГде почитать про представление вещественных чисел в машине?
У патриархов.
http://www2.hursley.ibm.com/decimal/decifaq.html

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350793
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
Привет, Sarin!
Ты пишешь:


У патриархов.
http://www2.hursley.ibm.com/decimal/decifaq.html

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
А на великом и могучем есть?
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350801
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Sarin!
Ты пишешь:

Sarin Мимопроходящий http://www2.hursley.ibm.com/decimal/decifaq.html
S> А на великом и могучем есть?Так оно и есть.
На великом и могучем английском языке.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350809
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да мнеб на великом и могучем русском
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350815
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Sarin!
Ты пишешь:

Sarin S> Да мнеб на великом и могучем русскомЭкая блажь...
Ты ж программер, или где?!

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350943
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да я англицкий нормально знаю. Но читать предпочитаю на русском.

По возможности.
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350946
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinЕщё вопрос:
Код: plaintext
1.
2.
size of "longDoubleZero":  12 
longDoubleZero: - 0 .000000e+ 00    iterations:  16319 
это ему разрядов не хватило? Фактически компуктер сказал, что машинный эпсилон = 0.

Просто при вычислениях с истинной разрядностью сопроцессора так оно и бывает. Все остальное от урезанной мантиссы.
...
Рейтинг: 0 / 0
Машинный нуль.
    #33350962
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lelikk
Просто при вычислениях с истинной разрядностью сопроцессора так оно и бывает. Все остальное от урезанной мантиссы.
???
...
Рейтинг: 0 / 0
Машинный нуль.
    #33359670
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinСпасибо большое. Где почитать про представление вещественных чисел в машине? тут .
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Машинный нуль.
    #34205062
НАРОД!! помогите мне плиииз! мне надо посчитать машинный нуль для нуля! Именно посчитать! а не просто вставить число наименьшее для данного типа...
...
Рейтинг: 0 / 0
Машинный нуль.
    #34205068
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
float zero = 1;
Надо сказать, у автора этой строки есть определенное чувство юмора :)
...
Рейтинг: 0 / 0
Машинный нуль.
    #34206746
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Горе-программерНАРОД!! помогите мне плиииз! мне надо посчитать машинный нуль для нуля!пишешь flat zero=1; и в цикле делишь его на два, пока не надоест.
...
Рейтинг: 0 / 0
Машинный нуль.
    #34237233
kZ25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Машинный нуль.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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