500*_*500 7 wolfram-mathematica
考虑:
Grid@Partition[
Text[Style[ToString[Range[0, 180, 22.5][[#]]] <> "\[Degree]", Bold, 16,
GrayLevel[(8 - #)/10]]] & /@ Range[8], 2, 1]
Run Code Online (Sandbox Code Playgroud)

如何摆脱整数之后的点?
Dav*_*idC 10
如果在合理化数字时数字变为整数,请使用整数; 否则坚持原始号码.这是通过一个简单的功能实现的f[x]:
f[x_] := If[IntegerQ[n = Rationalize[x]], n, x]
Run Code Online (Sandbox Code Playgroud)
测试...
f[67.5]
f[0.]
f[45.]
(* Out *)
67.5
0
45
Run Code Online (Sandbox Code Playgroud)
您不能只是Rationalize所有的值,如下所示:

要查看它在您的情况下是如何工作的,只需(f/@)在代码中插入以重新格式化以下输出的值Range:
Grid@Partition[
Text[Style[
ToString[(f/@ Range[0, 180, 22.5])[[#]]] <> "\[Degree]",
Bold, 16, GrayLevel[(8 - #)/10]]] & /@ Range[8], 2, 1]
Run Code Online (Sandbox Code Playgroud)
所以

小智 9
虽然原始问题没有指数的任何数字,但一般来说使用NumberForm最安全如下:
trimPoint[n_] :=
NumberForm[n,
NumberFormat -> (DisplayForm@
RowBox[Join[{StringTrim[#1, RegularExpression["\\.$"]]},
If[#3 != "", {
"\[Times]", SuperscriptBox[#2, #3]}, {}]]
] &)]
Run Code Online (Sandbox Code Playgroud)
然后你只需要通过插入// trimPoint来修改原始代码,如下所示:
Grid@Partition[
Text[Style[
ToString[Range[0, 180, 22.5][[#]] // trimPoint] <> "\[Degree]",
Bold, 16, GrayLevel[(8 - #)/10]]] & /@ Range[8], 2, 1]
Run Code Online (Sandbox Code Playgroud)
另一种可能性是不首先产生它们.
If[IntegerQ[#], #, N@#] & /@ Range[0, 180, 45/2]
Run Code Online (Sandbox Code Playgroud)
给
{0,22.5,45,67.5,90,112.5,135,157.5,180}
一般来说,你应该使用Rationalize.
Rationalize@10.
Out[1] = 10
Run Code Online (Sandbox Code Playgroud)
但是在你的情况下,你不应该简单地使用Rationalize,因为你不想对某些元素进行操作.这是一个简单的方法,可以做你想要的.
list = Range[0, 180, 22.5] /. (x_ /; FractionalPart@x == 0.) ->
IntegerPart@x
Grid@Partition[
Text[Style[ToString[list[[#]]] <> "\[Degree]", Bold, 16,
GrayLevel[(8 - #)/10]]] & /@ Range[8], 2, 1]
Run Code Online (Sandbox Code Playgroud)

上面的代码产生相同的列表作为你的,然后有条件地替换那些具有元素FractionalPart等于0.(例如,10.),其IntegerPart(例如10).