我该如何在程序中做到这一点?数学问题
问题描述:
我在尝试制作一个转换数值的泛型方程。这里有些例子。我该如何在程序中做到这一点?数学问题
9,873,912 -> 9,900,000
125,930 -> 126,000
2,345 -> 2,400
280 -> 300
28 -> 30
In general, x -> n
基本上,我正在制作一个图表,我想让数值看起来更好。如果是6位数或更高的数字,则应该至少有3个零。如果是4位数或更少,则至少应有2位数字,除非是2位数字,否则1为零。
(忽略逗号,它们只是帮助阅读示例)。无论如何,我想将一个值x
转换为这个新值n
。什么是g(x)
等于n
?
这是一个Objective-C程序(iPhone应用程序)。
答
Ahhh四舍五入在编程上总体上有些尴尬。我想建议的是除以十的力量,诠释和乘以返回。效率不高,但会起作用。可能有一个库可以在Objective-C中做到这一点,但我不知道。
if (x is > 99999) {
x = ((int)x/1000) * 1000;
}
else if (x > 999) {
x = ((int) x/100) * 100;
}
else if (x > 9) {
x = ((int) x/10) * 10;
}
答
使用标准C函数,如round()或roundf()...在命令行尝试man round
,根据数据类型的不同,有几个不同的选项。你可能会想通过以适当的数量划分,然后用相同数量的结果乘以第一缩放值,是这样的:
int roundedValue = round(someNumber/scalingFactor) * scalingFactor;
+0
非常感谢!完善。 – CodeGuy
我的意思是你所描述的一切,听起来像是你可以写你的自我。 – zellio
不,因为我不知道如何做舍入... – CodeGuy
查找'有意义的数字'(有时称为“有效数字”。) –