- 1 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:35:43.857 ID:sKUCt2t20
- 数値の小数点以下が何桁か取得したい時って
文字列に変換して.でスプリットしてレングス求めるのが普通?
もっとスマートなやり方ある? - 2 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:36:32.767 ID:fPbZ89wkd
- なんかそういう関数ありそう
- 3 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:36:51.751 ID:SG8myaN80
- %fとかその辺弄るってことは知ってる
- 4 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:40:33.192 ID:BB3qdpzS0
- 浮動小数点数の誤差を考えると小数点以下の桁数を数えるのは怪しいと思うが
- 6 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:41:09.823 ID:sKUCt2t20
- >>4
どういうこと? - 5 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:40:45.184 ID:sKUCt2t20
- var numbers = String(number).split('.');
var ketasu = numbers[1] ? numbers[1].length : 0;
javascriptだとこんな感じ? - 12 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:49:57.337 ID:ZvYRtu9fd
- >>5
これ小数じゃなかったら死なない?
それも気にしなくていいっていうならいいんだが - 15 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:00:14.149 ID:sKUCt2t20
- >>12
2行目で少数以下がない場合の考慮してるよ - 7 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:42:26.782 ID:/jzLerw60
- double-int
- 8 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:42:50.895 ID:sKUCt2t20
- >>7
なるほど、賢い - 9 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:43:27.987 ID:eIVbvYdK0
- 指数表記とかするんじゃね
- 10 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:44:23.110 ID:sKUCt2t20
- 誤差とか使用用途とかは気にしなくていいです
- 11 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:48:24.801 ID:bwJu/KJM0
- どうせふざけたスレだろうと思ったら結構深いな
まず「小数点以下何桁」が必ず有限になるような入力だけなのか
条件によってはデータ型から作る方が良いかもとか
考えることが色々ある - 13 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:50:20.735 ID:BB3qdpzS0
- 浮動小数点数型は、10進数を2進数で表すから非常に小さな誤差が出る
例えば、0.1 + 0.2 の結果が 0.30000000000000004 とかになったりする
決められた範囲なら正しく扱う言語もあった気がするが - 16 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:00:50.697 ID:sKUCt2t20
- >>13
誤差とかは気にせんでいいわ - 14 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 01:54:23.768 ID:VIx7UweG0
- 例がJSってことは普通に浮動小数点数だろうから>>1の実装でいいんじゃないの
- 18 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:02:00.613 ID:sKUCt2t20
- >>14
すまんpythonの予定、まあどちらにしても浮動小数だが
float-intってでも誤差出ないよね - 20 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:06:57.265 ID:sKUCt2t20
- >>18
誤差出たわクソ - 17 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:01:21.607 ID:BB3qdpzS0
- >>1の目的は知らないけど計算の過程で生じる非常に小さな誤差のせいで意図しない桁数が出力されると思うが
それについては大丈夫なのか - 19 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:02:41.398 ID:sKUCt2t20
- >>17
システム内で計算した値に対して行うわけでないので大丈夫 - 21 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:07:42.885 ID:bwJu/KJM0
- ああなんだただ文字列の「.」より右を数えたいだけか
どうでもいいな
好きなようにパターンマッチしろって感じ - 22 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:11:35.311 ID:BB3qdpzS0
- 結局文字列で数えるしかないのかな
数値で扱おうとすると厳密すぎる問題だ - 23 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:11:41.318 ID:sKUCt2t20
- s=411.52351
t=len(str(s))-len(str(int(s)))-1
print(t)
こんなん考えたけど、>>1に比べて何やってんのかぱっと見わからんな - 24 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:15:49.115 ID:dOXYu+ND0
- ググっても文字列に変換してるのしか出てこないな
他にやりようが無いのかね - 25 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:16:23.738 ID:38DLsKvqa
- 結局オリジナルコードより、ググって良さそうコードを使うのが安定
- 26 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:19:30.571 ID:IzMMVlbxd
- 目的が曖昧過ぎて話にならん
- 27 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:21:43.174 ID:5gLTDo4g0
- 普通に文字列に変換するのが良いと思う
なんか不都合あんの - 28 名前:ひみつの名無しさん 投稿日時:2020/06/10(水) 02:22:33.487 ID:BB3qdpzS0
- パソコン上で数値を扱うときに小数点以下の桁数を気にする状況があんまりない
気にするってことはかなり厳密に計算か測定されたデータなんだろうけど
コメント