使用ToString()方法将(负)double值转换为string

时间:2015-12-29 20:56:15

标签: types c++-cli tostring

我使用ToString()方法将双精度值转换为string。它适用于正数,但当double为负值时,例如-5,结果string5-。我无法弄清楚如何正确使用格式说明符。

public: void displaynumber(double x) {
    richTextBox1->Text = x.ToString();
}

我已经尝试格式化ToString("D")来阅读MSDN格式化,编译没有错误,但我在运行时遇到异常:"格式说明符无效"。

4 个答案:

答案 0 :(得分:0)

std::to_string函数位于<string>库中,您可以这样做

#include <string>

public:
    void displaynumber(double x)
    {
        richTextBox1->Text = std::to_string(x);
    }

语法x.ToString()意味着ToStringx的方法,double并且没有这样的方法。

答案 1 :(得分:0)

x.ToString()意味着ToString是x的一种方法,它是一种数据类型double,根本不应该编译。然而,to_string<string.h>库中的一个函数。

#include <string>

public:
    void displaynumber (double x) {
        richTextBox1 -> Text = std::to_string(x);
    }

答案 2 :(得分:0)

如果Double.ToString()给你的是5-而不是-5,那可能是因为你的计算机被设置为一种文化,其中符号位于该号码之后。 (你在世界的哪个地方?Windows设置的语言是什么?)

如果您想要-5,无论程序运行的文化如何,最简单的方法是指定要使用的文化。在这种情况下,我不要使用格式说明符,只需在CultureInfo::InvariantCulture上指定只需格式提供程序的overload即可。

richTextBox1->Text = x.ToString(CultureInfo::InvariantCulture);

答案 3 :(得分:0)

x.ToString()实际上有效...它返回正确的字符串..即使x ia为负...问题出现在richTexBox1中,当它实际显示表单上的文本/字符串时,它会放置负号在号码之后。但是,如果我只是查看watch变量,richTextBox1的文本值实际上显示正确的字符串..即使是负数...即,当x = -56时,文本将是&#34; -56&#34; ..但是当它显示在表格上时......它变成了56 - 。

这是另一个调试或问题的主题。 感谢所有试图提供帮助的人。