• ベストアンサー

python 10を100で割ってでた極小値

coffeebarの回答

  • ベストアンサー
  • coffeebar
  • ベストアンサー率49% (216/435)
回答No.1

誤差が出るのはいわゆる「仕様」ですね。誤差を出さないようにするためには、いくつか方法があります。 https://ictsr4.com/py/m0020.html ↑等を参考にしてください。

ketae
質問者

お礼

ありがとうございます print(0.1+0.1+0.1 == 0.3) で False が返るのは驚きでした。 計算するにしても桁数は常に意識したほうがよさそうです。

関連するQ&A

  • python3の割り算

    有るサイトでプログラミングの勉強をしています わからないことが有るので教えてください n枚のコインを二人に均等に分けなさいという初歩的な問題です 2≦n≦50 コンソールからnを入力して以下の様にしたのですがこの回答だと不正解になってしまいます 2~50までコンソールで打ち込んで確認をしてみたのですが一見間違いは見つけれれませんでした。 何が間違ってるのか教えてください n=int(input()) print(n//2)

  • python3

    半角スペース区切りで2つの値が与えられるときは n,m = map(int, input().split()) というのはわかります。 ではN個の値が半角スペース区切りで与えられるときはどうすればいいでしょうか?

  • python ver3について

    python3を勉強している初心者です。 参考書に載っていた、階乗を計算する例題を変更したいと思っています。 このプログラムを書き換えて、input文で任意の数字nをキーボードから入力して、結果を表示させたいんですが、どうすれば良いでしょうか。 このプログラムでは思う様に動きません。 n=input() def fact(n):   if n ==0:     return 1   return n*fact(n-1) print(fact(n)) input() よろしくお願いいたします。

  • Python: matrix追加でNoneの理由

    下記の#入力とPython #コード の実行で、「出力結果」が出ます #▼Aのところで、 matrix.append(d) を可視化しようとしたら None しか返りません 想像では入力の2行目以降が順次追加されていくイメージを想像していました [[11, 14, 16, 9]] [[11, 14, 16, 9], [11, 14, 16, 9]]  : 質問: 1)この#▼Aの下の行でNoneしか返らない理由をおしえてください 2)matrixに追加されて形成される行列は、単純にメモリ上で形成されていると考えていいですか? #入力 3 11 14 16 9 13 15 19 10 10 11 14 11 #コード N = int(input()) # 空のリストを作成 matrix = [] for i in range(N): # 入力を受け取り、リストに変換 d = list(map(int, input().split())) # リストをmatrixに追加 matrix.append(d) #▼Aここでmatrixを可視化しようとした print(matrix.append(d)) print(app) #▼Bここでもmatrixを可視化しようとした print(matrix) # 1行目の要素0 first_element = matrix[0][0] print(first_element) #11 #==出力結果================== None None None None None None [[11, 14, 16, 9], [11, 14, 16, 9], [13, 15, 19, 10], [13, 15, 19, 10], [10, 11, 14, 11], [10, 11, 14, 11]] 11

  • Pythonの変数等について

    Pythonで以下のコードについておしえてください 1,2,3、4について この右辺と左辺をあわせたものは変数ですか?それともどちか片方だけが変数ですか? 5について 5,print("支払金額は" + str(total_price) + "円です") カッコの中は引数ですよね? 引数の中にstr(total_price)という関数が入っているということですか? 1,apple_price = 200 2,kazoeru_kazu = input("りんごの数を入力してください") 3,count = int(kazoeru_kazu) 4,total_price = apple_price * count 5,print("支払金額は" + str(total_price) + "円です")

  • pythonでフィボナッチ数カウントを行いたいのですが...

    pythonで、入力された二つの数字によるrange(a, b)内からフィボナッチ数の数をカウントするプログラムを書きたいのですが、どのように書けば良いでしょうか?因みに、今のところ a=int(raw_input("Enter the minimum valuer:")) b=int(raw_input("Enter the maximum value:")) def fib(n): if n <= 0: n = 0 elif n == 1: n = 1 else: n = fib(n-1) + fib(n-2) return n for i in range(a, b+1): まで書いてみたのですが、この後どうしたら良いかわからなくなってしまいました。 初歩的な質問なのですが、どうかご回答よろしくお願いします。

  • 文字列の入力、数値変換について

    入力された数字を数値に変換するプログラムを作ったのですが、うまくいきません。 #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string.h> #include <ctype.h> unsigned long long atollu(char[16]); void main(void){ unsigned long long input; char str[16]; char test[16] = "123456789012345"; int i,j=1; //atollu の動作確認・・・(1) printf("atollu test:%llu\n\n",atollu(test) ); //入力 NG: printf("%d回目 数値を入力(1~100000000000000 終了:exit)>",j); gets(str); input = atollu(str); //str と atollu(str) の確認 printf("%s %llu\n\n",str,atollu(str)); //exitと入力すると終了・・・(2) if(strcmp(str, "exit") == 0){ exit(0); } //数字以外がないか確認・・・(3) else { for( i=0; i<=15; i++){ if(isdigit(str[i]) == 0){ printf("NG\n"); for( i=0; i<=16; i++){ str[i]='\0'; } printf("moji\n"); j++; goto NG; } } } //範囲外 if(input>100000000000000 || input==0){ printf("NG\n"); printf("hani\n"); j++; goto NG; } printf("\n入力値は% llu",input ); } unsigned long long atollu(char str[16]){ unsigned long long t=0; int i,n; n = strlen(str) - 1; for( i=0; i<=15; i++){ if(str[i] == '\0'){ str[i] = 0;} else { t = t + (str[i] - '0') * pow(10.0,n-i);} } str[16] = '\0'; return t; } /* 数字を数値に変換する関数atolluは自分で作りました。 これの動作は(1)でちゃんとした値が出ているのでうまくできているようです。 (2)も"exit"と入力すれば終了するのでうまくいっています。 また、例えば "12" と入力したとき 12 9 NG moji 表示されますが、二回目以降は 12 12 NG moji となり、atollu(str)はうまく出力されている一方で、最後に「moji」と出てきているので、(3)でうまくいっていないようです。 どう直すべきなのか見当もつかないので困っています。 よろしくお願いします。

  • python

    game.py class janken: def rsp(): import random count = 0 i = 0 hands = [] bk_hands=["ぐー","ちょき","ぱー"] f = open("rsp.txt","w") f.write("ぐー\nちょき\nぱー")・・・ mein.py mport game #各機能のクラスのインスタンスを作成する j = game() #無限ループで対話をしていく #ユーザーが終了コマンドを入力するまで繰り返す while True: #機能呼び出しのコマンドを表示する #じゃんけんの他にも機能があれば、2,3と増やしていくべし print('何をしますか?') print('1: じゃんけんする') print('9: 終了する') #入力されたコマンドに応じて機能を呼び出す act = int(input('整数で番号を入力:')) #1が入力されたらじゃんけんのメソッドを呼び出す if act == 1: j.rsp()・・・ この場合にmein.py", line 4, in <module> j = game() TypeError: 'module' object is not callable と出るのですが、なぜ呼び出してくれないのでしょうか

  • python/変数の変換

    今ソフトを作っていて調べてもわからないので困っています 合計した数字をtotalという変数に格納しているんですが ファイルへの書き込みの際にf1.write(total)と書くと typeerror: argument 1 must be string or read-only character buffer, not int というメッセージが出ます totalの中身はintengerなのですが それをstringに変換する方法はありませんでしょうか? これがソースコードの一部です n = input("N_data> ") p = input("P_data> ") total = n + p f1.write(total) また三行目と四行目の間に str(total)といれてみましたができませんでした 以上です よろしくお願いいたします

  • C言語のプログラミングですが、

    C言語のプログラミングですが、 255文字以内の文字列をキーボードから入力して、下記の各処理を行うプログラム(※入力した文字データは配列に入力)はどのようにしたらいいでしょうか?(入力例:acFNkeexFFg) ・入力した文字列の最後の文字を出力 ・入力した文字列⇒逆に並べ替えて出力 ・入力した文字列⇒縦に出力(1文字ずつ) ・入力した文字列の中に「F」が何個あるか ただし、使えるのはfor文・配列・if文ぐらいでそれ以上レベルの高いものは使わないで下さい。 … char str[255]; int i,n,na,nb,nc; printf("Input Strings= "); scanf("%s",str); for(i=0;str[i]!='¥0';i++){ n=i; } printf("The last character= %c",str[n]); くらいまでしか分かりません…