[過去ログ] C言語なら俺に聞け 160 (1002レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
585(4): (ワッチョイ e9b3-ftr4) 2023/03/05(日)18:29 ID:On/jxRV/0(1/2) AAS
#include <stdio.h>
#include <math.h>
void main(void){
double a, b, c;
double x1;
a = 4;
b = -3;
c = 1;
x1 = (-b + sqrt(pow(b,2) - 4*a*c)) / (2 * a);
printf("%f\n", x1);
省2
586: (スッププ Sd33-0t2P) 2023/03/05(日)18:43 ID:KnQWIUK4d(1) AAS
>>585
コンバイラかて人間や
こんなつまらん二次方程式の解をなんぞ解きたくない
そう言う意思表示や
587: (ワッチョイ 8b63-Qpn1) 2023/03/05(日)18:53 ID:M62PQQGq0(1) AAS
>>585
printf("(%f)\n",pow(b,2) - 4*a*c);
589(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 013e-zdzo) 2023/03/05(日)19:07 ID:AE3nXsIn0(1) AAS
>>585
sqrt に負数を渡した場合には定義域エラーとなり、定義域エラーのときは処理系定義の値を返す。
その処理系では処理系定義の値というのが nan だということになる。
言語仕様では詳細は規定されていないけれど
一般に浮動小数点の表現として使われる IEEE 754 などでは非数 (not a number) を表現のひとつとして持ち、
意味のある計算結果にならなかったときは非数がセットされる。
not a number の略で NaN 。
処理系によっては定義域エラーをハンドリングする方法を用意してあることもあるけど、
発生させないように事前にチェックしたほうが基本的には簡単だと思う。
593(1): (テテンテンテン MMeb-8VhG) 2023/03/05(日)23:40 ID:yUIw0mIIM(1) AAS
>>585
nanは、何処かでnanになると、その後の演算全てがnanになる
なのでsqrtのnanが伝搬してprintfがnanを表示した
ゲーム(特に3D)は、油断するとnanを伝搬させてしまう事があって、キャラがグチャグチャに壊れて表示されるのは、それが原因
nanを伝搬させるとデバッグが大変なので、nanを出さないように細心の注意が必要だ
sqrtとか特に割り算(/)に気を付けないといけない
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.040s