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

未分類
1:なんJゴッドがお送りします2021/07/07(水)  ID:AmjNftH200707

ある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/
未分類