瀏覽代碼

make all numbers floating point for !calc always

horgh 16 年之前
父節點
當前提交
6014a6bb2d
共有 1 個文件被更改,包括 5 次插入0 次删除
  1. 5 0
      calc.tcl

+ 5 - 0
calc.tcl

@@ -9,6 +9,7 @@ proc is_op {str} {
 
 proc safe_calc {nick uhost hand chan str} {
 	if {![channel get $chan calc]} { return }
+
 	foreach char [split $str {}] {
 		if {![is_op $char] && ![string is integer $char]} {
 			putserv "PRIVMSG $chan :$nick: Invalid expression for calc."
@@ -16,6 +17,10 @@ proc safe_calc {nick uhost hand chan str} {
 		}
 	}
 
+	# make all values floating point
+	set str [regsub -all -- {(\d+)} $str {[expr {\1*1.0}]}]
+	set str [subst $str]
+
 	if {[catch {expr $str} out]} {
 		putserv "PRIVMSG $chan :$nick: Invalid equation."
 		return