查看完整版本 : 用 swift 寫的一個簡單的計算機 iphone app
http://www.youtube.com/watch?v=LpRXLcgWvlI
功能簡單但常用的都有了。可以直接輸入負數,在除法時若除以0時會報錯,但不會停止前面的計算過程,只要改正就好了,以免前功盡棄。並有提示功能,讓使用者知道目前是在進行加減乘除的哪一個。按=之後的結果可以繼續使用,除非按C清除掉。如果直接按其他數字,也會開始一個新的算程。
有增加按鍵的音效,但無法錄出來。
但這個app只是在自己的手機上試玩而已,所以app store是看不到的 。 ?:teeth
ras0314
2016-07-05, 11:35 PM
如果寫好一個app要放上store要繳錢嗎?
如果寫好一個app要放上store要繳錢嗎?
不太清楚,但好像要先申請一個開發者帳號,這好像就要付費,才能進行上架的樣子。:whoknows
iOS系統的話,一年要繳交100美金,才能取得開發者帳號的資格,方能正式上架APP。
若僅是開發練習,目前已經開放iOS開發者,以XCODE寫好程式碼後,不是付費取得開發者帳號,也可以在本機端安裝app到自己的手機進行測試了!
iOS系統的話,一年要繳交100美金,才能取得開發者帳號的資格,方能正式上架APP。
似乎app做好後想上架還得經過 apple 審核過才行?不知審核的標準是什麼?
700214
2016-11-19, 10:07 PM
計算機的程式碼有公開的嗎~?自己練習做但遇到瓶頸Q小數點做不出來
計算機的程式碼有公開的嗎~?自己練習做但遇到瓶頸Q小數點做不出來
這是去年中寫的,未必適用於現在的 iOS版本。而且寫好之後沒有再去修飾過,內容很亂,所以外人和現在的我都未必看得懂。?:teeth 還有就是對浮點數減法的部份會有問題,並未去解決。
http://code.club/forum.php?mod=viewthread&tid=358
DavidYuan
2016-11-21, 09:52 AM
APP能不能上线,需要先看苹果的脸色,还有可能被苹果剥成皮~~~
极品好域名的价值又体现出来了。。。
~greenlau:~greenlau:~greenlau:
就是對浮點數減法的部份會有問題,並未去解決。
在寫計算機程式時,有一個困擾就是浮點數的減法會出現誤差。例如:
123.005 - 123.004 會得到 0.0009999...... 而非預期中的 0.001 。
因此寫了一個函式來解決這問題。
基本上是先求出二個數小數點後的位數,以最多的為準,乘上十的次方,再乘回二數將它們都變成整數,相減之後,得到的結果再除以剛才的十的次方,再變回字串出來。
//檢查小數點之後是否有數字
func pointCheck(s:String) -> Bool {
let n = Double(s)
if Double(Int(n!)) != n {
return true
} else {
return false
}
}
//將二個含有小數點的數字相減
func subtractFloat(s1:String, s2:String) -> String { //輸入二個數字字串
var c:Double = 0 //用做計算結果之用
var k:Double = 1 //作為十的次方之用
let n1:Double! = Double(s1) //轉換字串為浮點數
let n2:Double! = Double(s2) //轉換字串為浮點數
var a1 = Array(s1) //轉換字串為字元陣列
var a2 = Array(s2) //轉換字串為字元陣列
var counter1 = 0 //第一個陣列的元素個數
var counter2 = 0 //第二個陣列的元素個數
var afterPoint = 0 //看誰的小數點後面的數字個數多就給它
//求出二個數字小數點之後的數字個數
for i in 0...(a1.count-1) {
if a1[i] == "." {
counter1 = a1.count - i - 1
}
}
for i in 0...(a2.count-1) {
if a2[i] == "." {
counter2 = a2.count - i - 1
}
}
//將比較多的個數給予afterPoint
if counter1 >= counter2 {
afterPoint = counter1 }
else {
afterPoint = counter2
}
//將afterPoint當成十的次方數
for _ in 1...afterPoint {
k = k*10
}
c = (n1*k - n2*k)/k //先將二個數字乘上k都變成整數再相減,減完後再除以k回歸為浮點數
return String(c) //將結果轉換成字串回傳
}
最終解決函式:
func minus(str1:String,str2:String){
if pointCheck(s:str1)||pointCheck(s:str2) {
print(subtractFloat(s1:str1,s2:str2))
} else {
print( String(Int(Double(str1)!) - Int(Double(str2)!)) ) /*為何在此還要先把已知無小點的字串先換成Double再Int呢?因為如果字串是 "33.0"這種的,直接Int("33.0")會得到 nil 的答案,而造成程式fatal error。所以再多加一層轉換來把關*/
}
}
在寫計算機程式時,有一個困擾就是浮點數的減法會出現誤差。例如:
123.005 - 123.004 會得到 0.0009999...... 而非預期中的 0.001 。
因此寫了一個函式來解決這問題。
基本上是先求出二個數小數點後的位數,以最多的為準,乘上十的次方,再乘回二數將它們都變成整數,相減之後,得到的結果再除以剛才的十的次方,再變回字串出來。
後來發現這個解決方案並不成功,一樣會出現類似的狀況。
最近重新研究了一下,找到其他方案,又重新設計了一次,基本上解決了上述問題。而且還多了幾項新的特點:
一是這次的介面布局會跟著不同裝置螢幕的大小而變化,所以可以在目前所有的 iPhone or iPad 上看。直放橫放都可以。
二是多了backspace功能,按錯數字時可以倒著刪回去。
致命的 bug 目前還未發現,但某些功能上不符當初的想像,有所欠缺。
http://www.youtube.com/watch?v=GlDbCo8618U
vBulletin® v3.8.4,版權所有 ©2000-2026,Jelsoft Enterprises Ltd.