[過去ログ] Qiita 3 - キータぞ、来たぞ、キータだぞー (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
621
(2): デフォルトの名無しさん [sage] 2023/12/04(月) 22:33:26.37 ID:uA82POL4(2/3) AAS
#include <stdio.h>
#include <math.h>
#define PI 3.141592653589793238462643383279L
typedef unsigned Degree;
double degsin(Degree r)
{
  double sign = 1.0;
  r %= 360 * 60 * 60;
  if (r >= 180 * 60 * 60) {
    r = 360 * 60 * 60 - r;
    sign = -1.0;
  }
  if (r >= 90 * 60 * 60) {
    r = 180 * 60 * 60 - r;
  }
  return sign * sinl(r * PI / 180 / 60 / 60);
}
Degree degasin(double y)
{
  return roundl(180 * 60 * 60 * asinl(y) / PI);
}
int main(void)
{
  Degree r = 180 * 60 * 60 / 6;
  printf("degsin(%20.16f) = %.60f\n", (double)r / 60 / 60, degsin(r));
  r = degasin(0.5);
  printf("degsin(%20.16f) = %.60f\n", (double)r / 60 / 60, degsin(r));
  printf("\n");
  for (r = 0; r <= 360 * 60 * 60; r += 30 * 60 * 60) {
    printf("degsin(%20.16f) = %.60f\n", (double)r / 60 / 60, degsin(r));
  }
}
641
(1): デフォルトの名無しさん [sage] 2023/12/05(火) 13:43:23.68 ID:WZUOKD5G(1) AAS
>>597
597(4): デフォルトの名無しさん [sage] 2023/12/04(月) 02:08:38.29 ID:uA82POL4(1/3) AAS
#include <stdio.h>
#include <math.h>

#define PI 3.141592653589793238462643383279

int main(void)
{
  double r = PI / 6;
  printf("sin(%.16f) = %.16f\n", r, sin(r));
  r = asin(0.5);
  printf("sin(%.16f) = %.16f\n", r, sin(r));
}

外部リンク:wandbox.org
sin(0.5235987755982988) = 0.4999999999999999
sin(0.5235987755982989) = 0.5000000000000000

ラジアン派はこーゆーの気になんないの?
きっちり500mになるべきなのに0.1pmもの誤差が出るのは気になるといった話か
どれくらいだったら気にならないんだろ
>>621-622にしても計算時に誤差は出てるはずだけどlong doubleで計算してdoubleに
変換することでその誤差を見えないようにしただけだよな
見えなくなれば気にならなくなるのかな
704: 702 [sage] 2023/12/10(日) 02:04:39.98 ID:zoYXXcKe(2/2) AAS
>>703
703(1): デフォルトの名無しさん [sage] 2023/12/10(日) 01:52:17.90 ID:K18bkLWA(1) AAS
1/6はdoubleで正確に表せられないからそれやりたかったら分数型か度数法採用した三角関数使えって説明されないとわからん人かな
分かってるよ
元の話 >>621-623に対応するのは1/6だからやってみただけ
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.041s