【发布时间】:2015-11-02 22:00:44
【问题描述】:
我的代码:
// Convert SATOSHIS to BITCOIN
static double SATOSHI2BTC(const uint64_t& value)
{
return static_cast<double>(static_cast<double>(value)/static_cast<double>(100000000));
}
double dVal = CQuantUtils::SATOSHI2BTC(1033468);
printf("%f\n", dVal);
printf("%s\n", std::to_string(dVal).data());
谷歌输出:0.01033468
程序输出:0.010335 对于printf 和std::to_string
调试器输出:0.01033468
printf 和 std::to_string 是否对数字进行四舍五入?
如何获得具有正确值的字符串?
【问题讨论】:
-
to_string()和(我猜是printf)的默认精度是小数点后 6 位(参见:stackoverflow.com/questions/14520309/… 和 stackoverflow.com/questions/16605967/…) -
“google”(wtf?) 和调试器输出都没有任何意义。
-
抱歉,复制/粘贴错误。更新。如果您使用 google calc,您会得到 Google 输出。感谢@Nim 的回答
-
为什么?!只需将其保留为整数 Satoshis。无论您希望通过将其转换为
double来解决什么问题,都可以解决一些其他(更好!)的方法。 -
@DavidSchwartz 我将此作为SATOSHI 供内部使用,但我需要通过提供双精度值将数据呈现给交易所。如果与我所拥有的一起去,那么我将订购比我要求的更多的东西(由于 std::to_string 中的四舍五入)。
标签: c++