Перейти к содержимому


- - - - -

Экспоненциальное число вместо 0


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 Mike-A

Mike-A
  • Пользователь

  • Пользователь
  • 263 сообщений
  • Пол:Мужчина
  • Город:Ново - Переделкино

Отправлено 19.12.2010 - 21:10

Всем привет!

Сижу разбираюсь с C++ и попутно с Microsoft Visual express и попалась мне задача, что нужно найти значения функции на определённым отрезке с определённым шагом. Всё работало вроде хорошо, но вот только, когда значение аргумента доходит до 0, вместо 0 на экране отображается число в экспоненциальной форме. Что это за глюк? К сожалению, в поисковиках не нашёл ответа (((
Програмка ниже показывает эту проблему.
// zero.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])
{
	double k;
	for (k=1; k>=0; k -=0.1)
	cout << k << endl;
	system ("pause");
	return 0;
}

На картинке результат работы программы.

Прикрепленные файлы

  • Прикрепленный файл  zero.png   32,17К   132 Количество загрузок:

Сообщение отредактировал Mike-A: 19.12.2010 - 21:30


#2 pahan76

pahan76
  • Консультант

  • Пользователь
  • 990 сообщений
  • Пол:Мужчина
  • Город:Химки, М.О.

Отправлено 20.12.2010 - 18:41

Если кратко - это нормально.
Для чисел с плавающей точкой в общем случае невозможно получить точный 0 (да и любое другое число, не являющееся степенью 2).
При работе с ними всегда округляйте результат до приемлимого кол-ва знаков после , или миритесь с подобным.

#3 Vipous

Vipous
  • Великий и Могучий

  • Power User
  • 1 899 сообщений
  • Пол:Мужчина
  • Город:Солнцево

Отправлено 28.12.2010 - 20:52

Машинная точность по госту 7 знаков, округляйте. Или используйте вывод с обрезанием

#4 Mike-A

Mike-A
  • Пользователь

  • Пользователь
  • 263 сообщений
  • Пол:Мужчина
  • Город:Ново - Переделкино

Отправлено 24.01.2011 - 12:26

Спасибо за информацию!




Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей