我怎么在程序中这样做?数学问题

时间:2011-06-28 14:32:38

标签: objective-c math

我正在尝试制作一个转换值的通用方程式。以下是一些例子。

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应用程序)。

3 个答案:

答案 0 :(得分:6)

分割,截断和乘法。

10**x * int(n / 10**(x-d))

什么是“x”?在您的示例中,它是关于int(log10(n))-1

什么是“d”?这是有效数字的数量。 2或3.

答案 1 :(得分:1)

一般来说,编程在编程时有点尴尬。我建议除以10的幂,int cast和multipback。不是非常有效但它会起作用。可能有一个库可以在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;
} 

答案 2 :(得分:0)

使用标准C函数,如round()或roundf()...在命令行尝试man round,根据数据类型有几种不同的选项。您可能希望首先通过除以适当的数字然后将结果乘以相同的数字来缩放值,例如:

int roundedValue = round(someNumber/scalingFactor) * scalingFactor;