【发布时间】:2010-01-06 10:36:52
【问题描述】:
我需要一个数学函数/公式/表达式来将数字作为参数并找到以大于参数的某些数字结尾的最小数字。
例如,如果结尾数字应该是 88,这些是我想要的一些示例:
f(0) = 0
f(87) = 88
f(88) = 88
f(89) = 188 //NB: NOT 88*2=176
f(187) = 188
f(188) = 188
f(189) = 288
等等。你明白了。
到目前为止,我已经使用了一个函数(在 Delphi 中,不是我实现的):
function RoundToSpecificEndingDigits(aLength,aModMeasure : double) : double;
begin
Result := aModMeasure;
while Result < aLength do Result := Result + 100;
end;
现在我需要一个更“数学”的方法来处理 div 和 mods 和 rounds 等。原因是我想在 SQL 中做它而不创建函数。
【问题讨论】:
-
@ck - 认为这个问题是关于 PHP 的,这里我们处理的是 Delphi 或 SQL(@Svein,你可能想澄清一下)。
-
@Dominic - 用 PHP 实现,但逻辑是通用的。
-
PHP 实现的问题(无论多么合乎逻辑)是它是一个 _algorithm:,而不是一个数学表达式。 nickf 的答案是一个数学表达式,因此满足了我的需求。