将长双精度存储在几个双变量中

时间:2016-09-29 08:06:33

标签: c++ json casting

我必须以JSON格式存储long double变量。 JSON支持double个变量,但不支持long double。然后我必须将long double值拆分为多个double值,但我不知道如何轻松地执行此操作。

我已经通过这种方式为long long int变量做了这个:

std::vector<long int> long_long_int__to__long_int(long long int x)
{
  std::vector<long int> split;
  const unsigned long int n = sizeof(long long int) / sizeof(long int);
  for(unsigned long int i = 1; i < n; ++i)
  {
    split.push_back((long int)(x % (long long int)std::numeric_limits<long int>::max));
    x /= (long long int)std::numeric_limits<long int>::max;
  }
  split.push_back(x);
  return split;
}

任何想法如何使用浮点变量?

2 个答案:

答案 0 :(得分:1)

存储两个双打:(double)x(double)(x - (double)x)。 (并注意编译器错误和开关影响精度的处理,它们可能会在使用这些技术时引起问题,例如a gcc bug。)

答案 1 :(得分:1)

这是我能想到的解决方案,它也适用于你的long long int问题。

  1. 将您要存储的任何类型视为十六进制值数组,无论它是长long还是long double。
  2. 选择一个example算法并使用它将数组转换为可读字符串。
  3. 将字符串存储到JSON