あるfloatが別のfloatの整数倍であることを判定するにはどうすればええんや?
例えば1.5fが0.5fが3倍であるのを判定するとか
浮動小数点による誤差が気になって夜も眠れないンゴ
2:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
助けてクレメンスなあ
3:なんJゴッドがお送りします2021/07/07(水) ID:N8PwboCu00707
差が一定以下ってすればええやろ
5:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>3
その一定のラインはどこや?
1.50005みたいな場合はちゃんと整数倍でないとしたい
7:なんJゴッドがお送りします2021/07/07(水) ID:0hlYZ0zad0707
簡単だわ
浮動小数店をいじればレバレッジが効いて反発するだろ
10:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>7
お前さん、さては素人メンスな?
8:なんJゴッドがお送りします2021/07/07(水) ID:oH9yAdARd0707
いいよなんでもきいて
16:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>8
1に書いたで
答えてクレメンス
9:なんJゴッドがお送りします2021/07/07(水) ID:ZF8GofDWM0707
判定してくださいってお願いする
11:なんJゴッドがお送りします2021/07/07(水) ID:ya+VPuKY00707
オペレーターオーバーライドして自前で判定処理つくればええやん
12:なんJゴッドがお送りします2021/07/07(水) ID:E+krzhtoM0707
floatである必要性はあるの?
22:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>12
ダブルかなんかでもいい
でも小数であるのは必須や
13:なんJゴッドがお送りします2021/07/07(水) ID:7h2oIzF/00707
なんUにもプログラミング部あるから
14:なんJゴッドがお送りします2021/07/07(水) ID:BCewuGXh00707
浮動小数点の誤差はどうやってもついてくるから正確な判定は無理
15:なんJゴッドがお送りします2021/07/07(水) ID:i0WzIVLuM0707
割ればええんちゃう
余りとか駆使すればいけるやろ
26:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>15
余りに誤差は生じないのか?
17:なんJゴッドがお送りします2021/07/07(水) ID:0hlYZ0zad0707
フロートがダメならあれを使ってあれだよ
CSSのあれ
えーっと・・
18:なんJゴッドがお送りします2021/07/07(水) ID:oH9yAdARd0707
質問がないなら帰るよ
19:なんJゴッドがお送りします2021/07/07(水) ID:BwYiCSNzd0707
×3してifで判定する
21:なんJゴッドがお送りします2021/07/07(水) ID:tvAORP2h00707
割った答えが自然数やったらええんちゃうの
23:なんJゴッドがお送りします2021/07/07(水) ID:TosVHM9E00707
GitHub copilotや
24:なんJゴッドがお送りします2021/07/07(水) ID:0hlYZ0zad0707
アバンギャルドじゃなくて・・
27:なんJゴッドがお送りします2021/07/07(水) ID:cEx4YaKra0707
浮動小数点の誤差ほんまうんち
2進数で小数表現するもっといい方法ってないんかな
32:なんJゴッドがお送りします2021/07/07(水) ID:li02Bh/C00707
>>27
固定小数点とか言うのが過去にはあったし今も探せばあるやろ
39:なんJゴッドがお送りします2021/07/07(水) ID:9NIKNP6t00707
>>27
decimal型「decimal型」
29:なんJゴッドがお送りします2021/07/07(水) ID:li02Bh/C00707
浮動小数点の仕様を理解しようで
30:なんJゴッドがお送りします2021/07/07(水) ID:caa+qa7oM0707
余り0じゃだめなん?
31:なんJゴッドがお送りします2021/07/07(水) ID:9NIKNP6t00707
バイトに変換して一致してるかとか見ないとあかんのとちゃう
メリットを感じないが
34:なんJゴッドがお送りします2021/07/07(水) ID:ya+VPuKY00707
どこまで誤差許容するかはお前次第やろ
36:なんJゴッドがお送りします2021/07/07(水) ID:cxKmPUgw00707
floatで剰余使えなくね
37:なんJゴッドがお送りします2021/07/07(水) ID:CinSyJeEM0707
出来なくはないけど意味ない
38:なんJゴッドがお送りします2021/07/07(水) ID:Xp7W6gZJp0707
判定用に整数を用意するんや
40:なんJゴッドがお送りします2021/07/07(水) ID:yvI+B6A300707
x = 0.5 * 3
print x
これでオッケーや
42:なんJゴッドがお送りします2021/07/07(水) ID:b4c0jRgf00707
整数で言うa % b == 0をしたいってことか?
ほなら
var rem = a & b;
if (rem <= 0.5)みたいな感じでええんちゃうの?
44:なんJゴッドがお送りします2021/07/07(水) ID:b4c0jRgf00707
>>42
&打ち間違えで%や
48:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>42
すまん、なんやそれ
71:なんJゴッドがお送りします2021/07/07(水) ID:CinSyJeEM0707
>>42
それ小さいとだめじゃね?
43:なんJゴッドがお送りします2021/07/07(水) ID:9NIKNP6t00707
言語によっては浮動小数点の型によるレベルの誤差は無視して等しいとかやったりせんかな?
47:なんJゴッドがお送りします2021/07/07(水) ID:w+2u42xNM0707
>>43
方によるレベルの誤差をどう判定すんねん
かってに決められたら困るわ
52:なんJゴッドがお送りします2021/07/07(水) ID:li02Bh/C00707
>>43
ぶっちゃけ処理系にもよるから何とも言えんわ
floatを比較すること自体気持ち悪い人間はいる
46:なんJゴッドがお送りします2021/07/07(水) ID:i0WzIVLuM0707
実際企業とかの実用的なプログラミングするときって有効桁制御するからな
その状況自体矛盾してるような
54:なんJゴッドがお送りします2021/07/07(水) ID:CinSyJeEM0707
>>46
計算するようなのはそもそも任意精度とかやるよ企業とかでは
一般のアプリケーションでfloatの値受け取るとかの話ならそもそも有効桁の考慮すらしない
53:なんJゴッドがお送りします2021/07/07(水) ID:0hlYZ0zad0707
phpを
56:なんJゴッドがお送りします2021/07/07(水) ID:YwtXoAsF00707
たまに知恵袋になるよな
57:なんJゴッドがお送りします2021/07/07(水) ID:0hlYZ0zad0707
わかりませんすいませんでした
58:なんJゴッドがお送りします2021/07/07(水) ID:eb4GQgm0M0707
ユニバーサルメルカトル図法を使えば
59:なんJゴッドがお送りします2021/07/07(水) ID:aq8QFyQg00707
そこまで厳密に計算せなあかんのか
60:なんJゴッドがお送りします2021/07/07(水) ID:ya+VPuKY00707
そもそも正確な整数倍判定とりたいなら整数つかいなよ
浮動小数点数でそんな事しようとしてる時点でなんかおかしいで
64:なんJゴッドがお送りします2021/07/07(水) ID:cdYfsGYgM0707
>>60
これやな
誤差出てもどうせ切り捨てるわけやし
61:なんJゴッドがお送りします2021/07/07(水) ID:WY6PM4NI00707
x ÷ y = z だとしてZが整数かどうか判断したいって事?言語はc?
66:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>61
c#
63:なんJゴッドがお送りします2021/07/07(水) ID:17VQv7Xg00707
そんな簡単なこともわからないのか…
65:なんJゴッドがお送りします2021/07/07(水) ID:li02Bh/C00707
信号処理くらいでしか使わんわなぁ
それすら整数で考えた方がメリットが多いし
67:なんJゴッドがお送りします2021/07/07(水) ID:eb4GQgm0M0707
言語にもよるけど浮動小数点用の関数とか標準であるやん
68:なんJゴッドがお送りします2021/07/07(水) ID:buiMPNdo00707
decimal型にすれば
84:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>68
コレメンスか?
floatはdecimalにすると遅いとかあるんかな
69:なんJゴッドがお送りします2021/07/07(水) ID:9lxDE8hf00707
mod
70:なんJゴッドがお送りします2021/07/07(水) ID:ya+VPuKY00707
どうしてもやりたいなら大抵の言語はイプシロンとか定義されてるやろ
73:なんJゴッドがお送りします2021/07/07(水) ID:aq8QFyQg00707
decimalかdoubleじゃあかんのか?
74:なんJゴッドがお送りします2021/07/07(水) ID:CinSyJeEM0707
だからRational使えって
87:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
>>74
ググったけど日本語の文献ほぼないンゴねぇ
75:なんJゴッドがお送りします2021/07/07(水) ID:N8PwboCu00707
もしあれならなんか数値と誤差を持った型を作って、演算ごとに誤差が累積するようにして、比べるときにはその誤差の範囲内にあれば等しいようにするとか?
76:なんJゴッドがお送りします2021/07/07(水) ID:00fb1U7uM0707
Float型とか使わんわ
Doubleばっか
78:なんJゴッドがお送りします2021/07/07(水) ID:2c+PwInIH0707
割って整数かどうかジャッジ
86:なんJゴッドがお送りします2021/07/07(水) ID:17VQv7Xg00707
>>78
これ
割ったfloatの値を整数値かどうか判定する条件分岐を作ればええだけ
79:なんJゴッドがお送りします2021/07/07(水) ID:fN6y/h7m00707
宿題をなんJで解決するのやめろ
81:なんJゴッドがお送りします2021/07/07(水) ID:txFgbCnFM0707
10進数に最適化されたCOBOLっていう言語があるんですよ
82:なんJゴッドがお送りします2021/07/07(水) ID:9NIKNP6t00707
c#ならdecimalでええんとちゃうの?
83:なんJゴッドがお送りします2021/07/07(水) ID:N8PwboCu00707
誤差持った型でも作らない限り、元々の誤差なのか計算から来た誤差なのかの判別はつかんて
88:なんJゴッドがお送りします2021/07/07(水) ID:M25D+niVM0707
質問自体が相当レベル低くてプログラミングやったことないような奴の質問やからな
90:なんJゴッドがお送りします2021/07/07(水) ID:b1oVCXoQ00707
C=A*3
B==CならBはAの3倍
みたいにすりゃいいんじゃないかな
95:なんJゴッドがお送りします2021/07/07(水) ID:b4c0jRgf00707
>>90
普通に商と余りで計算できるんだからそれは効率悪すぎやろ
予め何倍か決まってるならええけど
91:なんJゴッドがお送りします2021/07/07(水) ID:LXUXOl3h00707
fizzbuzzっぽく書けばええんちゃう
知らんけど
94:なんJゴッドがお送りします2021/07/07(水) ID:FZvO2Ff6M0707
R
96:なんJゴッドがお送りします2021/07/07(水) ID:9lxDE8hf00707
a/b=c
if (!b*c=a){
倍数でない
}
smart!
97:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
ぉーん
100:なんJゴッドがお送りします2021/07/07(水) ID:9lxDE8hf00707
floatてmodだめなのか?
101:なんJゴッドがお送りします2021/07/07(水) ID:AmjNftH200707
ンゴ…
元スレ:https://swallow.5ch.net/test/read.cgi/livejupiter/1625632527/