s = "" + i;でintをStringに変換するのはなぜだめか
■ このスレッドは過去ログ倉庫に格納されています
>>159
いや、実数で表示する仕様。
計算もfloatでやってたから内部では誤差がでてた。
表示のときに適当にまるめてごまかしてたよ。
>>162
単に君のやり方がマズいだけだねそれは。 >>163
やっぱ、浮動小数点で計算して誤差が累積していくのはまずいんだよね。
やりかたがまずいのは下っ端だから、どうにもできない。
Rational型って浮動小数点が使えない環境だと使ったりする?
具体的にはマイコンとかで PCですらほとんど使われないのに、もっと資源が乏しいマイコンで使う理由があるとは思えない。
っていうか、マイコンでもCコンパイラは普通に実数サポートしてるよ。
何らかの理由で実数のライブラリを使えないかアセンブラ使う場合は、
俺様仕様の浮動小数か固定小数を使う場合が多い。 なんか、会社ってところはどこもそうなのかも知れないけどさ
良い人から辞めちゃうよね
んでもって、腹黒い人とか、他人を動とも思わない人とか、
図々しい人とか、・・・そんなのばかりがテコでも動かないぜって
感じで居座り続ける・・・
会社って、こうやってダメになっていくんだと思う
それはそのまんま居座り族・牛耳り族が社会をダメにしていくって
ことなんだ。。。 >>157
誤差ねー
NTSCの60fpsとかだよな
正確には60でなく60000/1001fpsなので、適当に扱うと、モロに誤差が集積する
「整数比を普通に扱いたい/計算したい」みたいな用途は
別にそう珍しくもないんじゃ?
例えば画面の縦横だって整数比だし
実数とは言うけれど、計算機上だと離散的な(整数)データ扱う機会のがむしろ
多いような >>168
フレーム数と比を掛けるだけだから、誤差の累積なんかないと思うけど....
ついでに野暮なことを言えば、フレームの時刻をそこまで厳密に求める意味は、
少なくとも2つの意味で通常はないよね。
一つは、恐らくビデオ回路の発振器の発振精度なんて恐らくそんな高くないから意味がない。
もう一つは、フレームの間隔を1/60secで計算して生成した画像と、
1001/60,000secで計算して生成した画像の差なんて、人間にはわからないw x = 1 / 3;
y = x * 3;
この時の y の値は有理数型と整数型、どっちであることがおまいらの好み? 正確な計算をしたいという用途はいろいろあるけれども、多くの用途で大きな数での累乗の計算がでてくるので、実際につかうとすぐ破たんする。 有理数型とか全然実用的でないものはいらんわ。
それよりゼロ割り許可の数値型とか欲しい。
3/0, 2/0, 1/0, 0/0, -1/0 ・・・でもちろんゼロ割り状態でソートとか出来るようなの。 >>175
おおなるほど。そのへんまで考えての分数型だったらすごいな。
でも単なる分数型だと 1/ (0^2) とか表現できる? 無限大の大小をソートしたいわけだし。 >>177-178
そうそう、というか最近の仕事でSQLなんだけど、(A / B) でORDER BY みたいな要件があったときに悩んだ。
もちろんBはゼロの可能性があって・・・なので言語的にそういうのカバーしてるのがひとつくらいあってもいいじゃん、てことです。 >>174
結局、Rational型がほしいのな。
>>178
未定義、もしくは0の符号により、> < 未定義があり得る。 数学的には1/0と3/0は∞で等しいでしょ。
それを分子によって順序付けしたいというのは、数学の定義ではなく、プログラマの独自の定義なんだから、
言語仕様でそれを定義しちゃったらおかしいよ。 いや、数学的にはどうとでも定義できるけど役に立たんから普通は定義しないだけだ
SQLでは0除算が役に立つのか? どういう理屈で等しいとか違うとか言ってるのかは知らないが(超準解析?)
数学的には
lim(1/x) x→0 と lim(3/x) x→0 の比較なのか分からんと何も言えない、ってとこじゃないの? x が正負どちらから 0 に近づくかでも違うしね。 >>190
אが出てきたからって反射的に連続体仮説を出してきたのか? というかさ、無限集合の濃度と極限値の大小を混同してないか? 極限値に大小があるからこそ無限集合の濃度が定義出来るんだぜ まあ俺>>174の言いたかったのはそんな数学的意義とかじゃなくて
単にゼロ除算で落ちない型があってもいいじゃんくらいの話なんだ ゼロ除算で落ちなかったらそれは何を意味する値になるのかわからんって話ではないのか
得体のしれない数同士を比較出来るようにしても…… いやだから、無限大にも大小はある(定義できる)し、あるいは内部的には分数型として式のまま(5/0とか)で保持でもいいし。 (3 / 0) + (1 / 0) = (4 / 0)
だったとして
(3 / 0) + (1 / 2)
はどうなりますか?
この中に・・・アホなやつがおる!
>>>197お前や〜! >>198
(3 / 0) + (1 / 2) を通分すると
(3 / 0) + (0 / 0) = (3 / 0) Rational型なら、3/0 と 1/0は、区別して持てる。
ただし、その大小は定義できない。
(通常、整数型の0には符号がない。) 無学な俺に Rational型 とやらを実装している言語を教えてくらさい。
ググってもなんか違う情報しかでなかったとです。
C++で演算子オーバロードを覚えたころに自力で分数クラスを作った覚えはある…… In [1]: a, b, c = symbols('abc')
In [2]: f = a*x**2 + b*x + c
In [3]: f
Out[3]:
2
c + b*x + a*x
In [4]: solve(f, x)
Out[4]:
_____________ _____________
/ 2 / 2
-b + \/ -4*a*c + b -b - \/ -4*a*c + b
[---------------------, ---------------------]
2*a 2*a "7" * 3 は ["7", "7", "7"] になってほしい PHPだと "7"==7 はtrueで "7"===7 はfalseだね。 7のように見えて
7のように鳴けば、
それは7なんだよ。 馬鹿多いな。
だから、"7"と7の間の比較法に曖昧さがなければ別に何も問題はない。
逆に聞くがどこか曖昧なところがあるのかよ。
多分若い奴が多いんだろうと想像するけど、80代のジジイみたいな硬直した
思考しかできない奴多いよな。 たしかに、"7"と7では曖昧さがないように見える。
だが文字と数値を比べるということは
それは文法的には"0"と0を比べることも可能ということになるんだよ。
"0"は文字という実体がある。だから真
0は何もないという意味。だから偽
違うものなのにイコールになる。
どう考えても曖昧だろ。 0は偽という点には反論しないのかw
お前は、どうでも良い揚げ足鳥にしか見えんのだが。
鳥なら鳥らしく飛んでみろよ。がけの上からな 言語による
Perlでは"0"は偽扱い
JavaScriptでは"0"は真扱い 揚げ足取りとか本気で言ってるなら大馬鹿だな。
とりあえず今の話題と「偽は0である」には何の関係もない。
言ってることが意味不明すぎる。
普通のプログラマなら、"7" == 7のような比較を許す言語では、
演算子==は2つのオペランドの型を揃えてから(要するに片方の値をもう片方の型に
暗黙的に変換してから)比較を行うんだろうと想像するだろう。
"7" == 7の場合は、恐らく"7"の方を整数に変換するルールを採用するんだろうね。
で、その方法にどこか曖昧さがあるのかよって。
まあ、あえて問題点も一つ指摘しとくけど、数値の文字列表現に桁区切りとか小数点が
入ってる場合は、そのルールが国や地域によって違うから問題がないわけじゃない。 >>221
つ
> Perlでは"0"は偽扱い
> JavaScriptでは"0"は真扱い a="0"
b=0
if a==b
どっち?
else
どっち?
end
曖昧だろ。 どこが曖昧なのかサッパリ理解できん。
仮に"0"が「特定の文脈において」bool値として扱われる言語があるとして、
それは「いつでも」そうであるということを意味しなければならない必然性はどこにもないはずだが...
本当に80代のジジイの思考力だな>>224 言語によって違うのを統一してほしいわ。
一つの言語しかやらない似非技術者はそれでいいんだろうけど。
文法が違うだけならまだ許せるが
同じ書き方をして、答えが違うのは
混乱の元。 >>225
お前は、一つの言語のルールさえ
覚えればいいから、それでいいんだろうさ。 C/C++での"0"は0\0と並んだ文字型配列へのポインタ
まあおすすめはしないがintとの比較も可能だろ。 Cの場合
7 は 7
'7' は 0x37
"7" はポインタ char ch = *("0123456789" + i); char ch = "0123456789"[7]; >>227
君は同じ(ような)ルールの言語をいくつ覚える必要があるの? char ch = 7["0123456789"]; >>234
言語の数だけ覚えるべきだろ。
元々コンピュータにあるのは数値だけだ。
型なんてものは元々存在しないのだから、型ってのは言語の都合でしかない。
そして言語の都合でしかないのだから、言語によって意味が違うのは当然のこと。
それを何か1つの言語の都合で統一したら他の言語が割を食う。 RubyなんてRails入れたら言語のルール変わるんだぜ >>238
問題は、「型=変数」って前提に合意が得られるかだな >239
たぶん>238は「型=変数のサイズ」って区切るんだと思うよ つまり long と double は同じ型だったりするんですね
わかります >238が言ってるハードレベルの差ってのはレジスタとかのことだろ
整数レジスタと浮動小数レジスタは別に決まってるだろうが
そんなことも説明されなきゃわからんのか Cなら変数の型とレジスタの種類が直結してるかもしれんが
高級な言語はもっと複雑な内部構造してるだろ。
JAVAなんか全部クラスだし。 >>240
うん、俺もそこだと思ったけど、カッコの位置間違えた。 Javaってさ
OO言語とか言われてるけど
結局のところ
Cからポインタ使えなくして
ガベコレ付けて
ぬるぽ例外出るようにしただけの
箱庭低級言語なんだよね >>248
・デフォでvirtual関数
・インタフェースの構文がある
・実装の多重継承を禁じた
C++に比べりゃだいぶ積極的だろ。OOPLとして。 >>248の考える高級なOOP言語って、LLのことだったりして。 Javaにポインタないってw
ないならなんでぬるぽなんてエラーメッセージが出るのかね ここで言ってる「ポインタ」って演算可能なメモリ番地(のようなモノ)のことだろ? ポインタ無くしてガベコレまで付けたのにヌルポ出る言語って 馬鹿か。
無くしたのは「ポインタ演算」であってポインタそのものではない。 ぬるぽが出ることの何が悪いのかよくわからん
javaが例外投げすぎなところはあると思うがぬるぽは全然問題無いだろ NULLpointerExceptionが出ることが悪いとはだれも言ってないな ( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>253
(_フ彡 /
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>255
(_フ彡 /
( ・∀・) | | ガッ
と ) | |
Y /ノ 人
/ ) < >__Λ∩
_/し' //. V`Д´)/ ←>>257
(_フ彡 /
■ このスレッドは過去ログ倉庫に格納されています