【发布时间】:2016-06-03 09:37:18
【问题描述】:
我们使用%.15g 为JSON 格式化一个具有最大精度但没有尾随零的双精度。然而,为了区分整数和实数,我们希望使用至少一位数字来格式化双精度数,即 "%.1f",但科学计数法中的数字除外(根据定义是双精度数)。
有没有办法在单个 snprint format 中实现这一点?
double val;
char buf[32];
if(fabs(val) < 1e15 && !fmod(val, 1)){
// whole numbers get at least one decimal
snprintf(buf, 32, "%.1f", val);
} else {
// automatically detemines decimal or scientific notation
snprintf(buf, 32, "%.15g", val);
}
【问题讨论】:
-
使用
15形成“最大精度”是正确的假设。
标签: c json formatting printf