В указанном вами коде есть потенциальная ошибка.
iterateRules
вы передаете input
вместо item
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);
}
}
Можно установить точность непосредственно на 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;
суд является объектом, который имеет набор методов, которые можно назвать для изменения точности и форматирования печатного материала.
существует setprecision (...) операция, но можно также установить другие вещи как ширина печати, и т.д.
Ищут суд в ссылке IDE.
Используйте std::setprecision
:
std::cout << std::setprecision (15) << 3.14159265358979 << std::endl;
Вот то, что я использовал бы:
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
для получения дополнительной информации о других атрибутах.
Наиболее портативно...
#include <limits>
using std::numeric_limits;
...
cout.precision(numeric_limits<double>::digits10 + 1);
cout << d;
С ostream :: precision (int)
cout.precision( numeric_limits<double>::digits10 + 1);
cout << M_PI << ", " << M_E << endl;
даст
3.141592653589793, 2.718281828459045
Почему вы должны сказать «+1» Я понятия не имею, но дополнительная цифра, которую вы получаете, это правильно.
printf("%.12f", M_PI);
%.12f означает плавающую точку, с точностью до 12 цифр.