為什麼這篇c# string轉double鄉民發文收入到精華區:因為在c# string轉double這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者driftseed (阿輝)看板java標題[問題] 字串轉運算時間Sat Nov 20 14:...
當使用者在文字欄輸入
5*6+1
如何把它變成一個運算得到答案
問題二
有辦法再多一個變數x之類的嘛
對話框一:輸入x的值x= 5
對話框二:x*6+1
然後得到正確答案??
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 1.170.131.46
補充一些資料
使用軟體:Ejs http://goo.gl/ehZ05
定義兩個變數
double z = 5;
string T ="16*z+11*8"; //(想做成使用者輸入)
做法
先搜尋出+ - * / 這些特殊字串 及 未知變數 z 的位置
利用這些位置去分斷這些字串
變成:
str[n] = ("16","*","z","+","11","*","8");
迴圈判斷未知數z
for (i=0;i<n;i++){
if(str[i]=="z") str[i] = z;
}
迴圈判斷*/
for (i=0;i<n;i++){
if(str[i]=="*") str[i] = str[i-1]*str[i+1]; //須移除掉str[i-1] str[i+1]
if(str[i]=="/") str[i] = str[i-1]/str[i+1];
}
再做個迴圈按照順序+-
這樣一來感覺十分龐大
還要考慮()、sin、^等等
但是如果在程式內部直接寫
double z = 5;
double y = 6*z+11*8;
馬上有答案
所以才想問看看能不能把字串直接轉成運算
也查過了
double :
Double.parseDouble(String s) : 將 s 轉換成 double
float :
Double.parseFloat(String s) : 將 s 轉換成 float
int :
Integer.parseInt(String s) : 將 s 轉換成 int
long :
Long.parseLong(String s) : 將 s 轉換成 long
但上面s的形態大概只能
s = "123";
s = "1.23";
這樣子
※ 編輯: driftseed 來自: 1.170.131.46 (11/20 16:24)
因為這是自己平常閒來沒事亂做來玩的,所以最後我改用javascript做了...
http://www.mediafire.com/?c4h9h2l44ivv2j5
*.html檔
功能:解方程式
但又產生問題了...javascript在小數運算不是很好...
只能產生近似解~
(我沒有想問javascript的事,只是報告一下進度)