我需要一个简单的浮点舍入函数,因此:
double round(double);
round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)
我能找到ceil()和floor()在math.h中-但不是round().
它是以另一个名称存在于标准C++库中,还是缺少?
我想将浮点数舍入到给定的精度,例如:
0.051 i want to convert it to
0.1
0.049 i want to convert it to
0.0
0.56 i want to convert it to
0.6
0.54 i want to convert it to
0.5
Run Code Online (Sandbox Code Playgroud)
我无法更好地解释它,但其原因是将点位置(如0.131f,0.432f)转换为网格中瓷砖的位置(如0.1f,0.4f).
可能重复:
为什么不对双精度值的操作给出预期结果?
我在C++中遇到了一个特殊的问题.我创建了一个Double类型的变量.然后我做了一些计算,将一些值分配给其他变量,并将结果分配给我声明的双变量.它给了我一个长小数部分的结果.我希望它只舍入到小数点后2位.并将其存储到变量中.但即使在几次尝试四舍五入之后,我也无法将其舍入到小数点后两位.
然后我尝试了另一种方法来检查真正的问题是什么.我创建了一个Double变量并为其赋值1.11.但是当我通过设置断点并为该变量添加监视来调试它时,我发现现在存储在变量中的值是1.109999999999.
我的问题是,为什么会这样显示?我们有什么方法可以将变量舍入到两位小数?为什么即使我们分配一个只有两位小数的数字,它也显示一个长小数部分?
请建议一种方法来存储数字 - 无论是计算数字还是直接分配数字 - 实际上是双变量而不是带小数字长的数字.
我需要删除小数点后的数字,但不是全部。
例如,double dig=3.1459038585 我需要将其转换为 dig=3.14
我想我需要多次 dig 到 100 然后将其转换为整数,然后再次转换为 double 并删除为 100 (所有这些都是 1 行)。但是有什么功能可以更快地做到这一点吗?
我尽了最大努力,在python、c++、php和JavaScript中找到了一些答案,但这些答案并没有完全解决我的问题......
C#我试图将第二个小数点的值四舍五入到可被 10 整除的最接近的值。
我有一个双精度值z= 14.066666
我需要变成z14.10
这是我到目前为止所做的:
var result1 = Math.Ceiling(z); // 15 (want 14.10)
var result2 = Math.Round(z,2); // 14.7 (want 14.10)
var result3 = Math.Round(z,5); // 14.0667 (want 14.10)
var result4 = Math.Ceiling(z*100)/100.0; // 14.07 (want 14.10)
var result5 = Math.Ceiling(z*10)/10 // 14.1 (want 14.10)
Run Code Online (Sandbox Code Playgroud)
感谢您的考虑,并感谢我遇到的任何帮助。