Проблема с двойной точностью и точностью с плавающей запятой - PullRequest
0 голосов
/ 14 июля 2020
#include <iostream>

int main()
{
    double a = 2 , b = 3;

    double answer = a/b;
    std::cout << answer;
    std::cout << std::to_string(answer);
}

Float или double Я получаю: 0,666667;

Я ожидал большей точности от double; Как мне получить что-то большее, например: 0.666666666666667

Edit: и мне нужно не терять точность, используя to_string;

Ответы [ 2 ]

2 голосов
/ 14 июля 2020

Я ожидал большей точности от двойного

Точность типа с плавающей запятой - это отдельная концепция от точности десятичного числа в текстовом представлении.

Вы не указали желаемую точность, поэтому было использовано значение по умолчанию. Так уж получилось, что значение по умолчанию не соответствует вашим ожиданиям. Вы можете указать точность, например, так:

std::cout.precision(15);
0 голосов
/ 14 июля 2020

setprecision находится в файле заголовка #include<iomanip>, который позволит вам установить десятичную точность.

Например:

#include <iostream>
#include <iomanip>  // The precision manipulator is in this header file 

int main()
{
    double a = 2 , b = 3;

    double answer = a/b;
    std::cout << std::setprecision(15) << answer;
    return 0;
}
 
...