I've been playing with numerical approximations for irrational numbers, and would find it convenient to be able to highlight where these approximations deviate from the known correct answers. For example, it would be nice to be able to output a number that looks like
where most of the digits have the default Output format, but after a specified number of digits, a different format (bold and red in this example) applies.
What would be the most elegant way to accomplish this?
Answer
Another approach:
mark[s_, where_] := With[{n = ToString@s},
Row@{StringDrop[n, -where], Style[StringTake[n, -where], Red]}]
Let's say you want to mark last 3 digits:
mark[N[Pi, 45], 3]
And a little bit more general approach:
mark[s_, w_] := With[{n = ToString@s},
Row@MapAt[Style[#, Bold, Red] &, Characters[n], {w}]]
it can work with Span
:
Just for fun, an extension:
mark[number_, spec : {{_, _} ..}] := With[{n = Characters@ToString@number},
Fold[
Function[{x, y}, MapAt[Style[#, y[[ 1]]] &, x, y[[ 2]]]],
n,
spec]] // Row
Comments
Post a Comment