Как я печатаю двойное значение с судом использования полной точности?

В указанном вами коде есть потенциальная ошибка.

  1. В рекурсивном вызове на iterateRules вы передаете input вместо item
  2. Также необходимо проверить, имеет ли input свойство rules [ 117]

Попробуйте это -

function iterateRules(input) {
  if(_.has(input, "rules")) {
    input.rules.map(function(item) { 
      if(_.has(item, "rules")){
        this.iterateRules(item);
      } else if (_.has(item, "data")) {
          return item.data = "foo";
      }
    }, this);
    console.log(input);
  }
}
306
задан Jakub 16 October 2019 в 08:14
поделиться

7 ответов

Можно установить точность непосредственно на std::cout и использовать std::fixed спецификатор формата.

double d = 3.14159265358979;
cout.precision(17);
cout << "Pi: " << fixed << d << endl;

Вы можете #include <limits> для получения максимальной точности плавания или дважды.

#include <limits>

typedef std::numeric_limits< double > dbl;

double d = 3.14159265358979;
cout.precision(dbl::max_digits10);
cout << "Pi: " << d << endl;
366
ответ дан Bill the Lizard 23 November 2019 в 01:19
поделиться

суд является объектом, который имеет набор методов, которые можно назвать для изменения точности и форматирования печатного материала.

существует setprecision (...) операция, но можно также установить другие вещи как ширина печати, и т.д.

Ищут суд в ссылке IDE.

1
ответ дан Uri 16 September 2019 в 23:13
поделиться

Используйте std::setprecision :

std::cout << std::setprecision (15) << 3.14159265358979 << std::endl;
65
ответ дан Campa 23 November 2019 в 01:19
поделиться

Вот то, что я использовал бы:

std::cout << std::setprecision (std::numeric_limits<double>::digits10 + 1)
          << 3.14159265358979
          << std::endl;

В основном предельный пакет имеет черты для всей сборки в типах.
Одна из черт для чисел с плавающей точкой (плавающий/двойной/длинный двойной) является атрибутом digits10. Это определяет точность (я забываю точную терминологию) числа с плавающей точкой в основе 10.

См.: http://www.cplusplus.com/reference/std/limits/numeric_limits.html
для получения дополнительной информации о других атрибутах.

23
ответ дан Martin York 23 November 2019 в 01:19
поделиться

Наиболее портативно...

#include <limits>

using std::numeric_limits;

    ...
    cout.precision(numeric_limits<double>::digits10 + 1);
    cout << d;
0
ответ дан 23 November 2019 в 01:19
поделиться

С ostream :: precision (int)

cout.precision( numeric_limits<double>::digits10 + 1);
cout << M_PI << ", " << M_E << endl;

даст

3.141592653589793, 2.718281828459045

Почему вы должны сказать «+1» Я понятия не имею, но дополнительная цифра, которую вы получаете, это правильно.

0
ответ дан 23 November 2019 в 01:19
поделиться
printf("%.12f", M_PI);

%.12f означает плавающую точку, с точностью до 12 цифр.

3
ответ дан 23 November 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: