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