默认情况下可以舍入数字吗?

Is possible to round numbers by default?

关于轮函数:

N decimal places.
Value := Round(Number [, N])

是否可以为所有值设置 'default' 行为,当它有超过 [2] 个位置时?

例如:

x := 9999
y := 3.5
z := x/y
msgbox %z%

z 输出:2856.857143

我怀疑是否可以在这种情况下 AutoHotkey 自动将数字四舍五入到 [2] 个位置,而无需我明确调用 round 函数。

那么z会输出2856.85.

其中 [2] 可以是任何数字。

你可以这样使用:

x := 9999
y := 3.5
z := x/y

msgbox %  "As Function with N = 2:`n"  NRound( z, 2)
msgbox %  "As Function with N = 3:`n"  NRound( z, 3)
msgbox %  "As Function with N = 4:`n"  NRound( z, 4)

NRound( number, n ) {
  main_result     := SubStr( number, 1, pos := InStr( number, "." )+n ) 
  if ( SubStr(number, pos+1, 1 ) > 5 )
      main_result :=  SubStr( main_result, 1, -1 ) . SubStr(main_result, -0)+1
return main_result
}

如果您不想显式调用函数进行舍入,您可以使用:

SetFormat,IntegerFast, .2

默认值为 .6,您可能在上面的结果中注意到了这一点

如果在脚本顶部的 auto-execute 部分中使用,如果我没有记错任何数学运算,它将在整个脚本中全局使用。查看文档中的 SetFormat 以获得命令的完整描述,因为它也可以更普遍地用于总宽度。