ToString() 函数中的舍入浮点数?

Rounding float in ToString() function?

所以我有一个带有标签的表单,该标签应该显示浮点值,问题是无论发生什么情况,我都需要将该数字四舍五入到小数点后两位:

label1->Text = System::Convert::ToString( (float)((float)temperature/204.6) );

我试着找了几个小时,但我发现没有直接四舍五入那个野兽方程的方法,据我所知没有办法告诉 ToString() 把东西四舍五入到两位小数。

在 ToString 方法中有没有简单的方法将结果四舍五入到小数点后两位?

你不能将结果乘以 100,转换为 int,然后除以 100 并转换为 float 吗?

这很简单:

String^ s = String::Format("{0:N2}", temperature/204.6); 

Is there any easy way to round the result to 2 decimal places inside ToString method?

不,不使用 std::tostring() 并且如果您想保留尾随零。使用 std::ostringstream 和适当的 I/O manipulators 代替:

 std::ostringstream oss;
 oss << std::fixed << std::setprecision(2) << (temperature/204.6);
 label1->Text = oss.str();

这里 JavaScript 相当于 toFixed:

#include <iostream>

std::string ToFixed(double number, size_t digits)
{
    char format[10];
    char str[64];
    sprintf_s(format, "%%0.%zdf", digits);
    return std::string(str, sprintf_s(str, format, number));
}

int main()
{
    std::cout << ToFixed((double)12345 / 204.6, 2) << std::endl;

    return 0;
}

打印:

60.34