過去の桐井戸端BBS (桐ver.9)
29969 60進数から10進数に変換したい はつじい 2005/05/18-08:23
関数電卓ではDEGですが、60進数から10進数の変換する関数は有りませんね、
項目 [あ]は60進数

#整数( [あ])+(#整数(([あ]-#整数( [あ]))×100)÷100)×100÷60+([小数部]-(#整数(( [あ]-#整数( [あ]))×100)÷100))×10000÷3600

もう少しスマートな方法は有りませんか。
29971 Re:60進数から10進数の変換 今村 誠 2005/05/18-09:23
記事番号29969へのコメント
はつじいさんこんにちは
#mod(#時間数値(#時間値(#S(#str([あ],-2),".",":")),1),24)
ではだめでしょうか?
29976 Re:60進数から10進数の変換 うにん 2005/05/18-09:48
記事番号29969へのコメント

>項目 [あ]は60進数

60進数って、A〜Zまで小文字まで使うのかと思いましたが。
2桁使って101だったら10進で61ということなんでしょうかね。

>#整数( [あ])+(#整数(([あ]-#整数( [あ]))×100)÷100)×100÷60+「÷100)×100」が全く無駄ですが。

29979 Re:60進数から10進数の変換 はつじい 2005/05/18-13:32
記事番号29976へのコメント
今村様、うにん様 有り難う御座います
今、帰って見せて貰っています、関数はゆっくり検討させていただきます。
60進数は、時間と同じで60秒で1分、60分で1度、円の一週は360度、360度は0度です。

0度30分(0°30′)は1度の1/2で0.50度(10進数)です。
29980 Re:60進数から10進数の変換 今村 2005/05/18-16:09
記事番号29979へのコメント
はつじいさんこんにちは
>60進数は、時間と同じで60秒で1分、60分で1度、円の一週は360度、360度は0
>度です。
>
>0度30分(0°30′)は1度の1/2で0.50度(10進数)です。

どうも間違ったようですね
項目[あ]のデータ型と
期待する答えをお書きになってみては
例えば
あ数値 い数値
 60  1
360  0
180  0.5
 90  0.75
720  2
1.3  1.5
あ文字列    い文字列
0度30分   0.5度
60秒     1分
60分     1度
360度    0度
540度30分 180.5度 
29981 Re:60進数から10進数の変換 はつじい 2005/05/18-16:38
記事番号29980へのコメント
今村さん,有り難う御座います、
一応結果は出ています、しかし、関数電卓ではDEGのボタン1個で結果が出るのですが
DEG D.MS(10進角から60進角に変換)関数がないので長い計算式になります。
又、小数部を取り出す関数もないようです。

>あ数値 い数値
> 60  60
>360  0
>180  180
> 90  90
>720  0
>1.3  1.5  です

 123°30′30″は 123.5083333度となります。
この数値を使ってSIN、COS、TANを計算します。

以下の文字ではダメです。

29982 Re:60進数から10進数の変換 はつじい 2005/05/18-17:16
記事番号29971へのコメント
今村 誠さん有り難う御座います

時間では24迄の表示となり、秒で誤差が出ています。
計算式を検討しています。

29983 Re:60進数から10進数の変換 うにん 2005/05/18-17:21
記事番号29981へのコメント

>又、小数部を取り出す関数もないようです。

小数部は#MOD(数値,1)でOKです。

> 123°30′30″は 123.5083333度となります。

入力が文字列で「123°30′30″」になってれば簡単ですね。

#MOD(#時間数値(#時間値([60進]) , 1 ),360)

後は小数部を2桁ずつに区切って文字列に変換すればいいわけですが。
(ところが、区切りは何でもいいはずが「°」とか「度」がなぜかエラーになる)

29984 Re:60進数から10進数の変換 はつじい 2005/05/18-17:49
記事番号29983へのコメント
うにんさん有り難う御座います

>小数部は#MOD(数値,1)でOKです。

取り敢えず小数部解決しました。
計算式が少し短くなります。



29985 Re:60進数から10進数の変換 はつじい 2005/05/18-19:46
記事番号29984へのコメント
[い]は60進数
[う]の項目計算式以下の通り

#整数( [い])+(#整数(#MOD([い],1)×100)÷100)×100÷60+(#MOD([い],1)-(#整数(( #MOD([い],1))×100)÷100))×10000÷3600

こんなところでしょうか、
皆さん有り難うございました。


29989 Re:60進数から10進数の変換 今村 誠 2005/05/19-08:42
記事番号29985へのコメント
はつじいさんこんにちは、計算式によって答えが違うようです。
60)#mod(#時間数値(#時間値(#str(#int([い]))+":"+#str(#int(#mod([い],1)
*100))+":"+#str(#int(#mod([い],0.01)*10^4))),1),360)
う)#int(#mod([い],360))+#int(#MOD([い],1)*100)/60+(#int(#MOD
([い],0.01)*10000)/60)/60
え)#整数([い])+(#整数(#MOD([い],1)*100)/100)*100/60+(#MOD([い],1)-(#
整数((#MOD([い],1))*100)/100))*10000/3600
60)と う)え)では1分12秒や1分30秒等では答えが微妙に違うようです。
え)は360度以上では間違うようです。
2度59分60秒等の誤った情報を入力するときも微妙に違うようです。

以下の項目を定義
[度]整数[分]整数[秒]整数
[い]数値 項目計算式 [度]+[分]/100+[秒]/10000
[60]数値
[う]数値
[え]数値
[うが違う]整数 項目計算式 #cond([60]<>[う],1)

テスト用の一括処理

表 "tesu.tbl"
変数宣言 固有,数値{&度=0,&各分=0.&各秒=0}
繰り返し  &度=0,361
 繰り返し &各分=0,59
  繰り返し &各秒=0,59
   行追加 [度]=&度,[分]=&各分,[秒]=&各秒
  繰り返し終了
 繰り返し終了
繰り返し終了

29990 Re:60進数から10進数の変換 はつじい 2005/05/19-11:53
記事番号29989へのコメント
今村 誠さん有り難う御座います。
ゆっくり検討させていただきます。
29992 Re:60進数から10進数の変換 はつじい 2005/05/19-20:26
記事番号29989へのコメント
今村 誠さん、有り難う御座います

>はつじいさんこんにちは、計算式によって答えが違うようです。
>60)#mod(#時間数値(#時間値(#str(#int([い]))+":"+#str(#int(#mod([い],1)
>*100))+":"+#str(#int(#mod([い],0.01)*10^4))),1),360)
>う)#int(#mod([い],360))+#int(#MOD([い],1)*100)/60+(#int(#MOD
>([い],0.01)*10000)/60)/60
>え)#整数([い])+(#整数(#MOD([い],1)*100)/100)*100/60+(#MOD([い],1)-(#
>整数((#MOD([い],1))*100)/100))*10000/3600
>60)と う)え)では1分12秒や1分30秒等では答えが微妙に違うようです。
>え)は360度以上では間違うようです。
>2度59分60秒等の誤った情報を入力するときも微妙に違うようです。

角度ですから60進数より60進角の方がよいと思いますので進角とします

1分12秒と 1分30秒は 10進角では 0.02度 0.025度です
桐では0.01999999999999999  002499999999999999と表示されます。
必要な桁数で四捨五入が必要かと思います
又、360度以上は
#条件選択([あ] <0 ,[あ]+360,1,[あ]-#整数([あ]÷360)×360)で計算しておくと
良いと思います。


戻る