C++ 将文本框内容转换为浮点数

C++ Converting textbox content to a Float

仔细尝试了来自该线程的代码

Converting textbox string to float?

试图在评论中留下我的问题,但不允许这样做... 总结起来就像有两个文本框,从第一个获取数据,做一些事情,然后将结果返回给第二个。

String^ i1 = Textbox1->Text;
float rez = (float)(Convert::ToDouble(i1)*4);
Textbox2->Text = rez.ToString();

它工作得很好,除非 Textbox1 本身有一个浮点数(更新。它与 '65' 一起工作,但不适用于 '65.5')。 尝试执行该代码 - 破坏程序

>   Calc.exe!Calc::Form1::Button0_Click(System::Object^ sender = 0x01b29c58, System::EventArgs^ e = 0x01b45e40) Line 123 + 0x30 byte    C++

Convert::ToDouble

Using the ToDouble(String) method is equivalent to passing value to the Double.Parse(String) method. Value is interpreted by using the formatting conventions of the current thread culture.

所以,你需要

  1. 捕获可能的异常

    try {
        float rez = (float)(Convert::ToDouble(i1)*4);
    }
    catch (FormatException) {
        // handle format error exception here
    }
    catch (OverflowException) {
        // handle overflow exception here
    }
    
  2. 使用IFormatProvider