LoginSignup
3

More than 5 years have passed since last update.

swiftで累乗、つまり何回も同じ数をかける、二乗三乗する方法が10秒ググってもでてこないので、書きます(NSDemicalNumberを使う時)

Last updated at Posted at 2017-04-30

swiftで累乗、つまり何回も同じ数をかける、二乗三乗する方法が10秒ググってもでてこないので、書きます(NSDemicalNumberを使う時)

今から書きます
今から書きます

コメントで教えていただきました、以下の通り

下の方のコメントをご参照ください

両方、Double型にしたい場合、こんなんでいいですかね

print(pow(3.0, 4.0)) //=> "81.0\n"

pow("元になる数","累乗する回数の数(次数)")
これをprintする

そして、こんな感じで使おうと思います

var answer:Double = 2.0
var key:Double  = 5.0

print(pow(answer, key))

playgroundなどで書くと、きちんと表示されますね

型に関してはまだちょっと僕わかってないかもしれません(すいません
でもとりあえずわかりました(謎)
by コピペプログラマー

以下の試行錯誤中の駄文は読まないほうがいいです
(自分のために一応残してあります)


なんでそんなこと知りたいの?

で、、電卓を作っているからです(恥)

Powとか何とか?

Powっていう関数でいいの??
あーやばい、はやく教えろよ

なんなん?
書いとけよ

stackoverflowより

There isn't an operator but you can use the pow function like this:

return pow(num, power)
If you want to, you could also make an operator call the pow function like this:

infix operator ** { associativity left precedence 170 }

func ** (num: Double, power: Double) -> Double{
    return pow(num, power)
}

2.0**2.0 //4.0

んん?
(※これはC言語の方ですよね、そうですよね)
ってか関数ってなに(爆)宣言いるの?

関数?????関数って宣言しないと使えないの????ん??
え?
ん????

その辺をきちんと書いてくれよ
特殊な関数は、用意されていて、よびだせる系だけど
召喚呪文唱えて、フィールドに配置してからじゃないと、技使えないの??

え????は???
いつ俺のターンが来るんだよ
ずっと俺のターンだろ

10秒しかねええええんだよ

ちんたらやってんじゃねえーよ
わかりやすく書けよ

(※筆者はGoogle先生に聞いて、10秒でわからないと、困惑しはじめる、ゆとり世代以下の脳の持ち主です)

Swiftだけは関数定義しなきゃダメなの?

https://hydrocul.github.io/wiki/programming_languages_diff/number/pow.html
こちらのページに

各種言語での
累乗表現あるけど

他はこんな簡単なのに

Swiftは関数定義しなきゃダメなの???
ん????
どっち?
書いとけよ

あと3秒しかない

ああああ
ああああああああ

はやく

NSDecimalNumberを使っている場合は、そもそも累乗の書き方が違う、というか足し算ですら違う

あ、そうか、、、

今回、NSDecimalNumberという型を使っています
NSDecimalNumber
別名、では
Binary
Coded
Demical
Number
でBCDと呼ばれるらしいです

<NSDecimalNumberを使うメリット>
いろんな型に対応していて万能なので
その都度、形を変えて出すことができる

<NSDecimalNumberを使うデメリット>
うやって特殊な捉え方をしている関係上、
演算もBCD専用の書き方で行う必要がある

「NSDecimalNumber 累乗」で検索

「NSDecimalNumber 累乗」で検索すればいい、というのがわかってきました

これでググって、先頭10ページくらいを3秒で眺めると。。。

こちらのサイトに書いてありました

func decimalNumberByRaisingToPower(_ power: Int) -> NSDecimalNumber
dNum = [dNum1 decimalNumberByRaisingToPower:2];

という感じということですが…
http://cocoaapi.hatenablog.comより引用)

NSDecimalNumberを使う場合、マジで式の書き方、複雑っすね

ひえーーー

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3