
一個簡單的浮點運算工具——floatcbat最后由 dengyuli 于 -10-11 15:25這個批處理的浮點計算的原理很簡單,就是生成vbs文件然后運行它,VBS將值輸出到臨時文件,然后bat讀取臨時文件中的值并輸出到屏幕,并把值賦給變量%output%最后清除臨時文件和vbs腳本。這個批處理是原創作品。它還可以比較兩個浮點數的大小,支持以下運算:+,-,*,/,sqr(),sin(),cos(),tan(),ln(),abs(),^(乘方(在表達式中乘方符號為^^^^)) 其中ln()在表達式中應該寫成log()主要缺點:計算速度慢(一般在0.5秒以內,有些時候需要1-2秒)全部代碼如下:
nclick="copycode($('code0'));">復制代碼
- @echo off
- echo ^0>a
- if %1 == /? goto:usage
- if %1 == goto:usage
- if %1 == /b goto:bijiao
- echo c=^%1>>temp.vbe
- echo set fso=createobject^(^scripting.filesystemobject^^).opentextfile^(^a^,2^)>>temp.vbe
- echo fso.write c>>temp.vbe
- goto:r
- :bijiao
- if %2 == echo 錯誤:缺少值 & echo= & echo請輸入floatc ^/^?查看幫助 & goto:end
- if %3 == echo 錯誤:缺少值 & echo= & echo請輸入floatc ^/^?查看幫助 & goto:end
- echo set fso=createobject^(^scripting.filesystemobject^^).opentextfile^(^a^,2^)>>temp.vbe
- echo a=^%2>>temp.vbe
- echo b=^%3>>temp.vbe
- echo if a^<b then>>temp.vbe
- echo c=^0>>temp.vbe
- echo fso.write c>>temp.vbe
- echo end if>>temp.vbe
- echo if a=b then>>temp.vbe
- echo c=^1>>temp.vbe
- echo fso.write c>>temp.vbe
- echo end if>>temp.vbe
- echo if a^>b then>>temp.vbe
- echo c=^2>>temp.vbe
- echo fso.write c>>temp.vbe
- echo end if>>temp.vbe
- :r
- call temp.vbe
- set /p output=<a
- echo %output%
- del /f /q temp.vbe >nul
- del /f /q a >nul
- goto:end
- :usage
- echo %~nx0 -- 浮點運算器
- echo=
- echo 用法1:%~nx0 [表達式]
- echo 用法2:%~nx0 ^/b [值1] [值2]
- echo 例:%~nx0 sqr(2)
- echo 輸出結果:1.414213562
- echo 如果浮點數在-1和1之間,將省略小數點前的0
- echo 表達式格式與vbs中的表達式相同
- echo=
- echo 注意事項:使用 乘方 和使用 兩個加數都是整數的加法 時:
- echo 加法:在加數和被加數的后面要分別加上四個^,然后加上一個1,
- echo 例如:%~nx0 2^^^^^^^^1+3^^^^^^^^1
- echo 乘方:乘方符號為四個^
- echo=
- echo 當值大到一定程度時,會用科學計數法表示,其格式為:X.XXXXXXXE+Y
- echo 用科學計數法表示的數仍然可以比較其大小
- echo=
- echo ^/b比較值1和值2的大小(值1和值2缺一不可,均可以為浮點數)
- echo值1比值2?。狠敵?
- echo值1等于值2:輸出1
- echo值1比值2大:輸出2
- echo=
- :end

