Как считать числа точнее

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by BastardFromHell, 20 Feb 2010.

  1. BastardFromHell

    Joined:
    5 Feb 2010
    Messages:
    50
    Likes Received:
    18
    Reputations:
    6
    На сях флоаты и даблы нехватат.
    Там до 5 знаков после зпт и всё, а мне надо штук 15 хотябы, как сделать?
     
  2. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    404
    Likes Received:
    118
    Reputations:
    23
    на руби разрядность чисел ограничиваеться лишь оперативкой и свопом т.е. фактически не чем.
    а если на C то придеться самому писать класс со всеми втекающими туда операциями.
    P.S. если тебе посчитать какие-то конкретные числа, то скинь мне в ПМ я на руби посчитаю
     
  3. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    http://ru.wikipedia.org/wiki/Длинная_арифметика
    пример, вычисления числа Пи http://algolist.manual.ru/maths/count_fast/pi.php
     
  4. Protorus

    Protorus New Member

    Joined:
    17 Jan 2010
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    что-то я в этом сомневаюсь, число в формате с плавающей запятой занимает в памяти компьютера 4 (число обычной точности) и 8 байтов (число двойной точности), ну или 10 байтов повышенной (родной для сопроцессора)
    Или в ruby все действия делаются столбиком?
     
    #4 Protorus, 20 Feb 2010
    Last edited: 20 Feb 2010
  5. NetSter

    NetSter Moderator

    Joined:
    30 Jul 2007
    Messages:
    810
    Likes Received:
    414
    Reputations:
    62
    DECIMAL

    http://msdn.microsoft.com/ru-ru/library/system.decimal.aspx

    числа в диапазоне от 79228162514264337593543950335 до -79228162514264337593543950335
    можно считать с точностью до 0,9999999999999999999999999999
     
    _________________________
    3 people like this.
  6. Forcer

    Forcer Elder - Старейшина

    Joined:
    12 Apr 2007
    Messages:
    321
    Likes Received:
    98
    Reputations:
    12
    Это .net . Речь шла о Си.

    Есть специальные библиотеки для работы с большими числами. Например, NTL
     
    1 person likes this.
  7. Aag

    Aag Elder - Старейшина

    Joined:
    26 Jul 2005
    Messages:
    60
    Likes Received:
    19
    Reputations:
    8
    Почему ты решил, что double только 5 знаков после запятой?

    Педставление чисел double обеспечиват относительную точность порядка 16 знаков после запятой.
    _http://ru.wikipedia.org/wiki/Число_двойной_точности

    Возможно, что у тебя проблемы с выводом нужного числа знаков после запятой?
    Code:
    #include <iostream>
    int main(){
    	double a=1.234567890123456;
    	std::cout<<a<<std::endl;
    
    	std::cout.precision(15);
    
    	std::cout<<a<<std::endl;
    
    	printf("%.14f \n",a);
    return 0;
    }
    
     
  8. Olegros911

    Olegros911 Banned

    Joined:
    7 Apr 2008
    Messages:
    135
    Likes Received:
    40
    Reputations:
    -7

    printf("%.14f \n",a); он прав

    в паскале можно при выводе

    writeln('chislo',S:4:14) ,будет выводить 14 знаков после комы
     
  9. BastardFromHell

    Joined:
    5 Feb 2010
    Messages:
    50
    Likes Received:
    18
    Reputations:
    6
    угу, да, но при подсчёте и флоат и дабл округляется. Например если вот что-то типа такого считать:
    Code:
    #include <iostream>
    	using namespace std;
    	int main( int argc, char *argv[])
    {
    	double x,x1 = 0;
    	cout << "int to start: " << endl;
    	cin >> x;
    	//f(x) = x^2 - 3
    	for(int i=1; i < 101; i++)
    	{
    		x1 = x - ((x*x-3)/(2*x));
    		x=x1;
    		cout << "approximation " << i << " x = " << x1 << endl;
    	}
    	return 0;
    }
    
     
  10. lukmus

    lukmus Elder - Старейшина

    Joined:
    18 Nov 2009
    Messages:
    404
    Likes Received:
    118
    Reputations:
    23
    Про целые числа в Ruby:
    Дроби в Ruby:
    Цитаты из книги "Путь Ruby" Хэл Фултон, стр. 164
     
  11. Protorus

    Protorus New Member

    Joined:
    17 Jan 2010
    Messages:
    22
    Likes Received:
    0
    Reputations:
    0
    Спс, сомнения развеялись, значит столбиком
     
  12. BastardFromHell

    Joined:
    5 Feb 2010
    Messages:
    50
    Likes Received:
    18
    Reputations:
    6
    Unspecified. This function should only be used as a stream manipulator. =\
     
  13. Red_EYEs

    Red_EYEs Member

    Joined:
    7 Aug 2009
    Messages:
    32
    Likes Received:
    12
    Reputations:
    11
  14. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    м, хорошая точность ;)
     
  15. BastardFromHell

    Joined:
    5 Feb 2010
    Messages:
    50
    Likes Received:
    18
    Reputations:
    6
    Спасибо, полезная либа. А стандартными средствами никак?
     
  16. Delimiter

    Delimiter Banned

    Joined:
    8 Apr 2005
    Messages:
    317
    Likes Received:
    173
    Reputations:
    12
    ну ..... еще было решение у Forth-овцев ....

    они работали с целыми числами всегда:

    система была проста
    допустим есть 2-ва числа

    0.86 и 10.5 (они просто учитывали где находится точка)
    и действия выполняли с 86 и 1050

    были решения как для строк(когда все числа постоянно находились в строковом выражении, так и для числового хранения!

    ... это если вдрух надумаешь написать библиотеку :D
     
  17. BastardFromHell

    Joined:
    5 Feb 2010
    Messages:
    50
    Likes Received:
    18
    Reputations:
    6
    Наверное имеет место быть какая-то погрешность, как бы её посчитать?
    Потому что виндовс калькулятор считает точнее - http://img534.imageshack.us/img534/5437/capturewv.jpg
     
  18. Red_EYEs

    Red_EYEs Member

    Joined:
    7 Aug 2009
    Messages:
    32
    Likes Received:
    12
    Reputations:
    11
    собственно воспроизвести то что было в либе теми же стандартными средствами :D
    Хотя бы реализовать арифметику "столбиком"