teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

import mathを追記

2020/10/21 00:02

投稿

ssm
ssm

スコア1

title CHANGED
File without changes
body CHANGED
@@ -24,6 +24,7 @@
24
24
  いただいた回答やコメントを参考にプログラムを書き換えました。このコードではうまくいかない事例などありましたらご教示願います。
25
25
 
26
26
  ```Python
27
+ import math
27
28
  import decimal
28
29
  def sig_digits(x, n):
29
30
  if x==0:

2

修正後プログラムの追加

2020/10/21 00:02

投稿

ssm
ssm

スコア1

title CHANGED
File without changes
body CHANGED
@@ -18,4 +18,19 @@
18
18
 
19
19
  ### 試したこと
20
20
 
21
- 負の小数なども含め、大体の数字はこのプログラムで一応正しく丸められました。
21
+ 負の小数なども含め、大体の数字はこのプログラムで一応正しく丸められました。
22
+
23
+ 追記:
24
+ いただいた回答やコメントを参考にプログラムを書き換えました。このコードではうまくいかない事例などありましたらご教示願います。
25
+
26
+ ```Python
27
+ import decimal
28
+ def sig_digits(x, n):
29
+ if x==0:
30
+ return 0
31
+ else:
32
+ digits=math.floor(decimal.Decimal(abs(x)).log10())+1 #桁数を取得する
33
+ x=decimal.Decimal(x) #十進数に直す
34
+ return round(x, -digits+n) #n桁に丸める
35
+ sig_digits(35.089667,5)
36
+ ```

1

初心者マークをon

2020/10/20 15:26

投稿

ssm
ssm

スコア1

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,7 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- 計算の際に有効数字を考慮したく、一応は目的の動作をするものが書けたもののプログラムに欠陥がないか、またもっと良い実装方法がないか知りたいです。
3
+ 計算の際に有効数字を考慮したく、一応は目的の動作をするものが書けたもののプログラムに欠陥がないか、またより洗練された実装方法がないか知りたいです。
4
- また、例えば3桁の有効数字を考える場合に1.2ではなく1.20と表示するなど、さら機能を洗練させていけるいいなと思っています。
4
+ 加えて、例えば3桁の有効数字を考える場合に1.2ではなく1.20と表示する、0.01ではく0.0100と表示するなど、表示方法ついても洗練させられれば考えています。
5
-
6
5
  ### 該当のソースコード
7
6
 
8
7
  ```Python