Arredondamento para um número arbitrário de dígitos significativos

Como você pode arredondarqualquer número (não apenas inteiros> 0) para N dígitos significativos?

Por exemplo, se eu quiser arredondar para três dígitos significativos, estou procurando uma fórmula que possa ser usada:

1.239.451 e devolver 1.240.000

12.1257 e devolver 12.1

.0681 e retorno .0681

5 e retorno 5

Naturalmente, o algoritmo não deve ser codificado apenas para manipular N de 3, embora isso seja um começo.

questionAnswers(17)

yourAnswerToTheQuestion