【问题标题】:How to convert the string "0xAp-2" to double of 2.5, using a std library function如何使用 std 库函数将字符串“0xAp-2”转换为 2.5 的两倍
【发布时间】:2011-10-14 13:49:23
【问题描述】:

我有一个包含“0xAp-2”的字符串。我想将其转换为双精度值:

#include <iostream>
#include <cstdio>

int main()
{
    char array[] = "0xAp-2";

    double a;

    sscanf(array, "%lf", &a);

    std::cout << a << "\n";
}

我已经尝试过 atof 和 sscanf,但无法正常工作。如果答案很明显,我深表歉意,但我已经尝试使用“sscanf”和“floating hexadecimal”等术语在 Google 上搜索。

【问题讨论】:

  • 什么是array[]字符串?是否相当于 0xA0 + (p-2) ?
  • A(十六进制 10)的 -2 次方的 C 表示法很奇怪。所以除以 4。
  • 您的代码在 Ubuntu 11.04 上使用 gcc 4.5 对我来说可以正常工作。
  • @Truncheon - 你的代码对我有用,无论如何在 Ideone 上(gcc-4.3.4)。 ideone.com/XSPjp

标签: c++ floating-point hex notation scanf


【解决方案1】:

我相信strtod 函数应该能够解析二进制科学记数法。

【讨论】:

    【解决方案2】:

    如果有什么可以做到的,C99 中的 %A 或 %a 格式应该可以做到。

    【讨论】:

      猜你喜欢
      • 2012-02-21
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 2018-09-28
      • 2016-04-23
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多