2017-09-12 7 views
-2

最初の20要素の核の比電荷を計算するのは長々とした宿題でした。科学計算機で同じ数式に異なる数を入力することに20回も苦しんでいないことを望む人であるので、私はそれをコード化しようとしました。しかし、私は実現:標準形で表現された非常に小さな値を計算するためにスウィフトを使用する

  1. スウィフトがネイティブ
  2. 小さな数字は、私はAの2つの入力を取り、そしてZは、私が信じていることが呼ばれた問題

を引き起こすように見える標準のフォームで使用するのは難しいです核種数とそれぞれ陽子数とは、式にそれらを適用:

Specific charge formula

がこれを使用して、causように見えましたしかし、eとmの値として p、m e、m nの値は非常に小さく、私はそれらと動作するように見えませんでした。しかし、私の科学計算機は手に入ることができます。迅速にこれをどうすればできますか?

データシート:http://filestore.aqa.org.uk/resources/physics/AQA-7408-SDB.PDF

EDIT:

私の問題は、私は彼らが、ほとんどの場合、0になってしまうために発生すると信じているように正しく番号を、キャストされなかった事実に嘘をつきました。この質問は、私がお詫びしたいと思うほど無意味なものになりましたが、元の問題を再現できないので、私の解決策を掲載します。

+0

実際のスウィフトコードが表示されていないと、どのようにして誰かがあなたの問題を解決すると思われますか? –

+0

私のスウィフトコードは定数の2つの入力と質問に表示された同じ数式で構成されていましたが、打ち出された式のラテックスバージョンはもっと意味があると思っていたでしょう – Skidushe

+0

なぜラテックス式が誰に間違っているコードを見ずにスウィフトコードを使って?デバッグのヘルプをここでトピックについて検討することを尋ねる質問については、問題の原因となるコードと予想される動作と実際の動作の説明を含める必要があります。あなたの質問は現在、トピックから外れています。なぜなら、それは目的の動作のみを含んでいるからです。 [最小限の、完全で検証可能な例を作成する方法](https://stackoverflow.com/help/mcve)に従って更新してください。 –

答えて

0

精度を保持するには、各値を倍精度にキャストする必要があります。 SCの値が計算された後、電卓に表示されるように表示されるように書式を設定しました。

//Homework: calculate specific charge of a nucleus given it's nuclide notation 
import Foundation 


let A = 4 
let Z = 2 
let e = 0 

let SC = Double(1.60*pow(10,-19)*Double(Z-e))/Double((Double(Z)*(1.673*pow(10,-27)))+(Double(A-Z)*(1.675*pow(10,-27)))+(Double(e)*(1.99*pow(10,-31)))) 

let numberFormatter = NumberFormatter() 
numberFormatter.numberStyle = NumberFormatter.Style.scientific 
numberFormatter.positiveFormat = "0.###E0" 
numberFormatter.exponentSymbol = "x10^" 
if let stringFromNumber = numberFormatter.string(from: SC as NSNumber) { 
    print(stringFromNumber) 
} 
関連する問題