プログラミングに自信のあるやつ来てくれ

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
パソコン上で数値を扱うときに小数点以下の桁数を気にする状況があんまりない
気にするってことはかなり厳密に計算か測定されたデータなんだろうけど

コメント

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