В ASP.NET Core 2.2 появилась новая служба LinkGenerator
, одноэлементная, которую можно вызывать вне контекста HTTP-вызова для генерации строки URL-адреса.
Пример:
public class SampleController : ControllerBase
{
protected readonly LinkGenerator _linkGenerator;
/ ...
(а затем в методе действия):
return _linkGenerator.GetPathByAction(
httpContext,
controller: "Home",
action: "Index",
values: new { id=1 });
Другой способ:
def roundup(num)
x = Math.log10(num).floor
num=(num/(10.0**x)).ceil*10**x
return num
end
Более идиоматически:
def roundup(num)
x = Math.log10(num).floor
(num/(10.0**x)).ceil * 10**x
end
Вот решение. Он реализует следующие правила:
.
def roundup(n)
n = n.to_i
s = n.to_s
s =~ /\A1?0*\z/ ? n : s =~ /\A\d0*\z/ ? ("1" + "0" * s.size).to_i :
(s[0, 1].to_i + 1).to_s + "0" * (s.size - 1)).to_i
end
fail if roundup(0) != 0
fail if roundup(1) != 1
fail if roundup(8) != 10
fail if roundup(34) != 40
fail if roundup(99) != 100
fail if roundup(100) != 100
fail if roundup(120) != 200
fail if roundup(360) != 400
fail if roundup(990) != 1000
fail if roundup(1040) != 2000
fail if roundup(1620) != 2000
fail if roundup(5070) != 6000
fail if roundup(6000) != 10000
fail if roundup(9000) != 10000