2014-01-17 26 views
1

我有一个应用程序,我必须处理非常大的数字。应用程序API给我编号,然后我必须将其转换为字符串并发送到进一步处理。 代码接收数量 - 1535625179.1619387双重字符串转换大数字与指数

然后转换我用 -

char buffer[255]; 
sprintf(buffer, "%e", OverallVolume); //OverallVolume has the above value. 

现在这里缓冲区变量回归1.535625e + 009这是标准化为1535625000.00 但我的应用程序显示的值1.5356252e + 09这是归一化为1535625200.00

所以我想问一下我应该用什么方法将double转换为String,以便我的结果值与应用程序显示的值相匹配。

回答

3

如果我正确理解您的问题,您希望7位数字出现在小数点后面。要做到这一点指定精度如下:

sprintf(buffer, "%.7e", OverallVolume); // buffer contains 1.5356252e+09 

Live demo


此外,由于这是标记C++,这是一个使用IO流,打印结果相同版本。

#include <ios> 
#include <iomanip> 
#include <iostream> 
#include <sstream> 

int main() 
{ 
    double OverallVolume = 1535625179.1619387; 
    std::ostringstream ss; 

    ss << std::scientific << std::setprecision(7) << OverallVolume; 
    std::cout << ss.str() << '\n'; // prints 1.5356252e+09 
} 

Live demo