Math 这个数字输入/输出模式的方程式是什么?

Math 这个数字输入/输出模式的方程式是什么?,math,Math,我试图提出一个单变量函数,它可以为给定的输入值重现预期的输出值。下表说明了具有数字输入范围的模式,这些数字输入范围产生预期的输出编号 0 ... 74 = 1 75 ... 749 = 10 750 ... 7499 = 100 7500 ... 74999 = 1000 至少,我希望一个方程可以处理它。否则,您能否提供一些伪代码来实现此模式?用于8及以上的输入: 除以74.999999,取十进制对数,四舍五入,然后取十进制指数。 作为一个公式:output

我试图提出一个单变量函数,它可以为给定的输入值重现预期的输出值。下表说明了具有数字输入范围的模式,这些数字输入范围产生预期的输出编号

   0 ...    74 =    1
  75 ...   749 =   10
 750 ...  7499 =  100
7500 ... 74999 = 1000

至少,我希望一个方程可以处理它。否则,您能否提供一些伪代码来实现此模式?

用于8及以上的输入:

除以74.999999,取十进制对数,四舍五入,然后取十进制指数。

作为一个公式:
output=10^(ceil(log10(input/74.999999)))

此公式仅适用于输入
=8
。如果输入为0,则对数将给出-无穷大或数学域错误。对于
[1,7]
范围内的输入,您将获得0.1而不是1的输出。如果您正在编写代码,可以通过添加
If
语句轻松解决此问题:

if (input < 8)
    return 1;
else
    return 10^(ceil(log10(input / 74.999999)));
if(输入<8)
返回1;
其他的
返回10^(ceil(log10(input/74.999999));

请注意,此伪代码中的
^
是指数运算,而不是按位异或
;在大多数语言中,可能会注意到
10**x
pow(10,x)
而不是
10^x
。感谢您强调这一点。

由于我们都是程序员,您能否指定输入是否为浮点/双精度、整数/长型?以及输出是否相同。为了给人更多的印象,您知道自己身处一个专门讨论编程问题的社区,请指定并标记您选择的编程语言。@Yunnosch数值上没有任意约束。(好吧,我们可以忽略负值)我知道这是一个程序员社区,我的问题来自编程工作。但我的问题并不是针对具体的语言。如果有更好的地方问数学问题,我很乐意去其他地方。这个问题是针对特定语言的程序员的。大多数语言都有整数除法,这一方面会使舍入变得无关紧要,但另一方面也会使通常的
pow()
函数的使用受到质疑。因此,如果不指定语言,至少指定输入/输出格式。如果你坚持不这样做,并且问题是纯数学的,那么数学大师可能会遇到一些关于如何表示舍入的问题,在他们的“任意限制的数字”世界中,程序员乐于忽略这些问题。而且,正如你在答案中所看到的(我相信是程序员),程序员在将0映射到0时没有问题,他们引入了一种特殊情况。对于公式的数学表示,会变得混乱。所以,一个纯粹用数学来回答的答案可能不是你想要的。严格地说,一个实际适用的答案(如下文)不是对你的“纯数学”问题的回答。我不确定应该是哪种语言。但在大多数语言中,我知道(例如C、C++、Perl、Python)<代码> ^ < /COD>在这个上下文中不应该做什么。当然,OP是在请求伪代码,但是这是一个很难捕捉的陷阱。我还在研究这个问题,但是到目前为止,我没有回答问题的答案。谢谢@ Yunnosch!我在伪代码的正下方添加了一条注释来解释您的评论。@Stef您的公式似乎为1-7生成了0.1。你的解决方案只是在它周围加上一个“max(1,)”吗?还是你认为这是一个更大的问题?我还在测试。