プログラミングに詳しいJ民来てクレメンス!!!!

1 : 2021/07/07(水) 13:35:27.06 ID:AmjNftH200707
あるfloatが別のfloatの整数倍であることを判定するにはどうすればええんや?
例えば1.5fが0.5fが3倍であるのを判定するとか
浮動小数点による誤差が気になって夜も眠れないンゴ
2 : 2021/07/07(水) 13:35:43.84 ID:AmjNftH200707
助けてクレメンスなあ
3 : 2021/07/07(水) 13:35:54.91 ID:N8PwboCu00707
差が一定以下ってすればええやろ
5 : 2021/07/07(水) 13:37:09.46 ID:AmjNftH200707
>>3
その一定のラインはどこや?
1.50005みたいな場合はちゃんと整数倍でないとしたい
20 : 2021/07/07(水) 13:38:39.08 ID:N8PwboCu00707
>>5
浮動小数点による誤差レベルの誤差は違うと判定したいんか?
誤差が浮動小数点由来かどうかまではわからんから大きさで区切るしかないで
元の数字の何%を誤差の上限にするとか
33 : 2021/07/07(水) 13:41:03.10 ID:AmjNftH200707
>>20
あまりに小さい桁は無視できる
ほな小数点何桁で区切ればええんや
41 : 2021/07/07(水) 13:41:57.95 ID:N8PwboCu00707
>>33
だからどこで切るかは君次第や
45 : 2021/07/07(水) 13:43:09.51 ID:CinSyJeEM0707
>>33
素直にRational型使え
そもそも根本的にfloatの使い方間違ってる
49 : 2021/07/07(水) 13:43:46.98 ID:AmjNftH200707
>>45
なるほど
50 : 2021/07/07(水) 13:43:58.23 ID:MV9GNpk+00707
>>33
お前が!決めろや!そのラインを!!
51 : 2021/07/07(水) 13:44:20.49 ID:MV9GNpk+00707
>>33
ハゲ!
25 : 2021/07/07(水) 13:39:23.05 ID:MV9GNpk+00707
>>5
そのラインはお前が決めるんや
4 : 2021/07/07(水) 13:36:19.26 ID:AmjNftH200707
こうして保守しておくンゴから
7 : 2021/07/07(水) 13:37:32.09 ID:0hlYZ0zad0707
簡単だわ
浮動小数店をいじればレバレッジが効いて反発するだろ
10 : 2021/07/07(水) 13:37:59.90 ID:AmjNftH200707
>>7
お前さん、さては素人メンスな?
8 : 2021/07/07(水) 13:37:35.47 ID:oH9yAdARd0707
いいよなんでもきいて
16 : 2021/07/07(水) 13:38:21.87 ID:AmjNftH200707
>>8
1に書いたで
答えてクレメンス
28 : 2021/07/07(水) 13:40:10.18 ID:oH9yAdARd0707
>>16
def integer?(x)
x==x.to_i;
end
35 : 2021/07/07(水) 13:41:17.86 ID:vIm6W/dxd0707
>>28
それrubyじゃん…
9 : 2021/07/07(水) 13:37:53.87 ID:ZF8GofDWM0707
判定してくださいってお願いする
11 : 2021/07/07(水) 13:38:12.48 ID:ya+VPuKY00707
オペレーターオーバーライドして自前で判定処理つくればええやん
12 : 2021/07/07(水) 13:38:13.42 ID:E+krzhtoM0707
floatである必要性はあるの?
22 : 2021/07/07(水) 13:38:58.80 ID:AmjNftH200707
>>12
ダブルかなんかでもいい
でも小数であるのは必須や
13 : 2021/07/07(水) 13:38:16.10 ID:7h2oIzF/00707
なんUにもプログラミング部あるから
14 : 2021/07/07(水) 13:38:17.63 ID:BCewuGXh00707
浮動小数点の誤差はどうやってもついてくるから正確な判定は無理
15 : 2021/07/07(水) 13:38:18.92 ID:i0WzIVLuM0707
割ればええんちゃう
余りとか駆使すればいけるやろ
26 : 2021/07/07(水) 13:39:29.19 ID:AmjNftH200707
>>15
余りに誤差は生じないのか?
17 : 2021/07/07(水) 13:38:26.55 ID:0hlYZ0zad0707
フロートがダメならあれを使ってあれだよ
CSSのあれ
えーっと・・
18 : 2021/07/07(水) 13:38:27.61 ID:oH9yAdARd0707
質問がないなら帰るよ
19 : 2021/07/07(水) 13:38:34.93 ID:BwYiCSNzd0707
×3してifで判定する
21 : 2021/07/07(水) 13:38:51.68 ID:tvAORP2h00707
割った答えが自然数やったらええんちゃうの
23 : 2021/07/07(水) 13:39:01.84 ID:TosVHM9E00707
GitHub copilotや
24 : 2021/07/07(水) 13:39:11.00 ID:0hlYZ0zad0707
アバンギャルドじゃなくて・・
27 : 2021/07/07(水) 13:39:46.59 ID:cEx4YaKra0707
浮動小数点の誤差ほんまうんち
2進数で小数表現するもっといい方法ってないんかな
32 : 2021/07/07(水) 13:40:55.69 ID:li02Bh/C00707
>>27
固定小数点とか言うのが過去にはあったし今も探せばあるやろ
39 : 2021/07/07(水) 13:41:41.86 ID:9NIKNP6t00707
>>27
decimal型「decimal型」
29 : 2021/07/07(水) 13:40:12.12 ID:li02Bh/C00707
浮動小数点の仕様を理解しようで
30 : 2021/07/07(水) 13:40:20.43 ID:caa+qa7oM0707
余り0じゃだめなん?
31 : 2021/07/07(水) 13:40:39.32 ID:9NIKNP6t00707
バイトに変換して一致してるかとか見ないとあかんのとちゃう
メリットを感じないが
34 : 2021/07/07(水) 13:41:11.46 ID:ya+VPuKY00707
どこまで誤差許容するかはお前次第やろ
36 : 2021/07/07(水) 13:41:23.17 ID:cxKmPUgw00707
floatで剰余使えなくね
37 : 2021/07/07(水) 13:41:36.31 ID:CinSyJeEM0707
出来なくはないけど意味ない
38 : 2021/07/07(水) 13:41:41.86 ID:Xp7W6gZJp0707
判定用に整数を用意するんや
40 : 2021/07/07(水) 13:41:56.91 ID:yvI+B6A300707
x = 0.5 * 3
print x

これでオッケーや

42 : 2021/07/07(水) 13:42:10.16 ID:b4c0jRgf00707
整数で言うa % b == 0をしたいってことか?
ほなら
var rem = a & b;
if (rem <= 0.5)みたいな感じでええんちゃうの?
44 : 2021/07/07(水) 13:42:58.57 ID:b4c0jRgf00707
>>42
&打ち間違えで%や
48 : 2021/07/07(水) 13:43:29.53 ID:AmjNftH200707
>>42
すまん、なんやそれ
55 : 2021/07/07(水) 13:45:28.20 ID:b4c0jRgf00707
>>48
余りが0やと対象の倍数ってことやん
62 : 2021/07/07(水) 13:47:27.67 ID:AmjNftH200707
>>55
それやと1.8も0.5の整数倍になるで
余りがどれだけ小さい時に整数判定するかのラインがわからんねゎ
71 : 2021/07/07(水) 13:48:47.46 ID:CinSyJeEM0707
>>42
それ小さいとだめじゃね?
43 : 2021/07/07(水) 13:42:32.11 ID:9NIKNP6t00707
言語によっては浮動小数点の型によるレベルの誤差は無視して等しいとかやったりせんかな?
47 : 2021/07/07(水) 13:43:23.53 ID:w+2u42xNM0707
>>43
方によるレベルの誤差をどう判定すんねん
かってに決められたら困るわ
52 : 2021/07/07(水) 13:44:28.17 ID:li02Bh/C00707
>>43
ぶっちゃけ処理系にもよるから何とも言えんわ
floatを比較すること自体気持ち悪い人間はいる
46 : 2021/07/07(水) 13:43:16.37 ID:i0WzIVLuM0707
実際企業とかの実用的なプログラミングするときって有効桁制御するからな
その状況自体矛盾してるような
54 : 2021/07/07(水) 13:45:18.36 ID:CinSyJeEM0707
>>46
計算するようなのはそもそも任意精度とかやるよ企業とかでは
一般のアプリケーションでfloatの値受け取るとかの話ならそもそも有効桁の考慮すらしない
53 : 2021/07/07(水) 13:45:13.90 ID:0hlYZ0zad0707
phpを
56 : 2021/07/07(水) 13:45:28.52 ID:YwtXoAsF00707
たまに知恵袋になるよな
57 : 2021/07/07(水) 13:45:31.43 ID:0hlYZ0zad0707
わかりませんすいませんでした
58 : 2021/07/07(水) 13:45:36.72 ID:eb4GQgm0M0707
ユニバーサルメルカトル図法を使えば
59 : 2021/07/07(水) 13:46:06.77 ID:aq8QFyQg00707
そこまで厳密に計算せなあかんのか
60 : 2021/07/07(水) 13:46:13.55 ID:ya+VPuKY00707
そもそも正確な整数倍判定とりたいなら整数つかいなよ
浮動小数点数でそんな事しようとしてる時点でなんかおかしいで
64 : 2021/07/07(水) 13:47:57.17 ID:cdYfsGYgM0707
>>60
これやな
誤差出てもどうせ切り捨てるわけやし
61 : 2021/07/07(水) 13:47:22.84 ID:WY6PM4NI00707
x ÷ y = z だとしてZが整数かどうか判断したいって事?言語はc?
66 : 2021/07/07(水) 13:48:13.33 ID:AmjNftH200707
>>61
c#
63 : 2021/07/07(水) 13:47:54.59 ID:17VQv7Xg00707
そんな簡単なこともわからないのか…
65 : 2021/07/07(水) 13:48:00.18 ID:li02Bh/C00707
信号処理くらいでしか使わんわなぁ
それすら整数で考えた方がメリットが多いし
67 : 2021/07/07(水) 13:48:21.50 ID:eb4GQgm0M0707
言語にもよるけど浮動小数点用の関数とか標準であるやん
68 : 2021/07/07(水) 13:48:25.29 ID:buiMPNdo00707
decimal型にすれば
84 : 2021/07/07(水) 13:50:58.07 ID:AmjNftH200707
>>68
コレメンスか?
floatはdecimalにすると遅いとかあるんかな
69 : 2021/07/07(水) 13:48:33.40 ID:9lxDE8hf00707
mod
70 : 2021/07/07(水) 13:48:36.01 ID:ya+VPuKY00707
どうしてもやりたいなら大抵の言語はイプシロンとか定義されてるやろ
73 : 2021/07/07(水) 13:49:09.08 ID:aq8QFyQg00707
decimalかdoubleじゃあかんのか?
74 : 2021/07/07(水) 13:49:19.02 ID:CinSyJeEM0707
だからRational使えって
75 : 2021/07/07(水) 13:49:31.53 ID:N8PwboCu00707
もしあれならなんか数値と誤差を持った型を作って、演算ごとに誤差が累積するようにして、比べるときにはその誤差の範囲内にあれば等しいようにするとか?
76 : 2021/07/07(水) 13:49:32.42 ID:00fb1U7uM0707
Float型とか使わんわ
Doubleばっか
78 : 2021/07/07(水) 13:49:59.54 ID:2c+PwInIH0707
割って整数かどうかジャッジ
79 : 2021/07/07(水) 13:50:01.45 ID:fN6y/h7m00707
宿題をなんJで解決するのやめろ
81 : 2021/07/07(水) 13:50:31.87 ID:txFgbCnFM0707
10進数に最適化されたCOBOLっていう言語があるんですよ
82 : 2021/07/07(水) 13:50:43.73 ID:9NIKNP6t00707
c#ならdecimalでええんとちゃうの?
83 : 2021/07/07(水) 13:50:45.68 ID:N8PwboCu00707
誤差持った型でも作らない限り、元々の誤差なのか計算から来た誤差なのかの判別はつかんて

コメント

タイトルとURLをコピーしました