我有一个浮点数
float n = 0.948245;
我想把这个数字减少到小数点后1位,应该是0.9。我不想 std::cout 或者把这个号码记录在任何地方。只想把n的值设为 0.9 是的。
std::cout
0.9
我怎么能这样 C++ 14 是吗?
附言: 在我发现的所有建议中,所有的都涉及到 STD:: 在浮子上。因此,我声明我不想这样做。
STD::
这就是 std::round() 和 std::trunc() 是为了。 标准::trunc() 查找不大于输入的最接近整数。因为您只需要1个小数位,所以在将其传递给函数之前,先乘以10(就像@retired ninja所写的那样):
std::round()
std::trunc()
标准::trunc()
float n = 0.948245; float result = std::trunc(n*10) / 10.0f;
尽管如此,我还是要提醒你 float 不是很精确。 请参阅中的以下示例 wandbox 以下内容:
float
float n = 100000.948245; std::cout << n << "\n";
输出为:
100001
问题是这里分配给 n 既大又有很多小数点后的数字。(顺便说一句,“大”表示 浮动 表示任何远离0到1范围的内容)。
n
浮动
使用 double 是一个 小的 更好,但如果你真的关心精度,即使是在大量,你最好使用定点数学。你真的必须考虑到你所关心的价值观的范围。
double