在C中将double表示为一个字符数组

时间:2014-12-16 04:38:18

标签: c gtk double

我正在使用GTK,在我的程序中,我正在接受用户输入,使用atof()将其从字符串转换为double以进行计算,然后将结果输出到条目中。我的问题是在使用

void gtk_entry_set_text( GtkEntry *entry, const gchar *text );

我显然需要将第二个参数作为gchar传递(或者只是一个指向字符数组的常规指针),但我不确定如何将我的double转换回double的人类可读表示。例如,用户输入65.0。我转换字符串" 65.0"到一个双65.0,执行我的函数(比如乘以2),现在我需要将双130.0转换为" 130.0",然后将它存储到一个字符数组中以传递给gtk_entry_set_text。我怎样才能做到这一点?

为了尽可能地澄清,以下是相关代码。

/* function for calculating optimal amount of cash to bet */
static void calculateRatioOfCash()
{
    const gchar *userInput;
    char outputString[BUFSIZ];

    /* retrieve probability of winning from input field */
    userInput = gtk_entry_get_text(GTK_ENTRY(entry));

    /* convert our probability in str to a double and compute betPercentage */
    double betPercentage = 2*(atof(userInput)) - 100;

    outputString = /* what code goes here ?? */

    gtk_entry_set_text(GTK_ENTRY(outputField), outputString);

}

2 个答案:

答案 0 :(得分:2)

使用sprintf。像这样:

sprintf(buf, "%lf", a)

Sample

sprintf(outputString, "%lf", betPercentage)

答案 1 :(得分:1)

由于您已经使用了GLib,我建议您使用GLib string utility functions。在这种情况下:

char *output = g_strdup_printf ("%f", betPercentage);

这比使用sprintf()更容易,因为它为你分配了内存 - 当然这意味着当你完成它时你应该g_free (output)