みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
OS:[Windows10]
FileMaker Ver:[13]
csv(EXCEL)の数値を含むFileをFMP13にインストールしたのですが、一部数値が誤っており、FMPのcellには「?」で表示されます。
なにか対策はありませんでしょうか?。
例
csv(EXCEL)の数値=278.6
FMPのセルの表示内容=?
セルにカーソルを当てると=278.60000000000002と表示されます。
Offline
FMPかEXELかどっちが変かわからないけど
これは2進演算の誤差範囲ではないかと
フィールドの数字書式をインスペクタの<データ>の一番下にある
書式をいろいろ変えてみてはいかがかと思います。
Offline
シャチ さん
ありがとうございます。
数値セルに対するインスペクターの「データーの書式設定」では
小数点以下の桁数を「2」としています。
ここで制限をかけていても、上述の様に、下3桁以下に変な数字X.99999999999とかが入力されてしまうのです。
FMPの欠陥(バグ)ではないかと思うのですが…?。最新のFMPではこの様な事が無いのでしょうか?。
なお、数値セルには3桁区切りも設定しています。
※Excel(CSV)側では小数点以下は1桁です。どのセルもこれ以上の桁数値はありません。
Offline
Excel 側の問題です。Excel は、数値を純粋に2進数で持たせていますので、小数はそのような値を持っています。表示されているのは、表示形式に合わせて調整してある数値です。
書き出しなどの際には元の数値を出しますので、無限小数になる事があります。
FMP側で対処するしか無いでしょうね。例えば、小数点以下3桁目を4捨5入しておくとかなどを、自動入力の計算に仕込んでおき、インポートの際にオプションで自動計算をオンにしておきます。
Offline
CSVなのかExcelなのかはっきりしませんが、CSVで278.6と入ってればFMにもそのまま入るのでは?
Excelで278.6と入れてCSVに保存してもそのまま出てきたけど。
実際はCSVでなくExcelから直接インポートしてませんか?
Shin さん
tim さん
皆さんありがとうございます。
Excel側の問題ですか。
正確に言いますと、今回のdataはCSVで与えられます(278.6)。それを多少の修飾(EXCEL)を加えた後、*.csvで保存し、
そのFileをFMPに「レコードのインポート」しています。(併せてExcel化(*.xls)でも保存していますが)。
この過程でShin さんの言われる様な現象が生じているのでしょうか。
FMP側でROUND関数処理をすればいいのでしょうか?。
ただ、他の数値、
2.3 が 2.2999999999999998に、315.9 が 315.89999999999998に、315.1 が 315.10000000000002
151.7 151.69999999999999に、290.9 が 290.89999999999998
などに数値化けしています。
しかし、
2.5、2.8、561.4、 1691.2、923.6、 などは正常に表示されています(数値化けはありません)。
どの様な数字の場合に数値化けするのでしょうか?。理解できていないのです。
あ!、見えて来ました、最終数値が、上のdataからすると、1、3.7、9、の時に化けていますね。
.0は整数で正常に表示されています。
この解釈でよろしいのでしょうか?。
Offline
csv に書き出した時に,その数値になっています。FMP側で Round() 関数で処理しておく以外無いでしょうね。
Offline
Excel2013で例えば1/7の計算式を入れてCSV保存しても、表示通りに保存されるけど。セルの書式で無理やり桁数を増やすと 0.14285714285714300000 のようになる。
Excelのオプションの詳細に「表示桁数で計算する」というのがあるから、オンにしてみたらどうかな。
tim さん
Shin さん
皆さん、度々ありがとうございます。
>実際はCSVでなくExcelから直接インポートしてませんか?
すみません、次のような事を行いました。
1.
①dataファイル(EXCEL)を開き、Excelのオプションにて「詳細設定-表示桁数で計算する」に設定。
②上書き保存。
③FMPV13でファイルのEXCELファイルのインポートを実行。
※結果、数値化けに変化はありませんでした。
2.
①dataファイル(EXCEL)を開き、Excelのオプションにて「詳細設定-表示桁数で計算する」に設定。
②Excelのファイル種を「csv」にして保存。
③FMPでインポート設定時、ファイル種を「csv」にして、csvファイルのインポートを実行。
※結果、数値化けは起きませんでした。
>Excel 側の問題です。Excel は、数値を純粋に2進数で持たせていますので、小数はそのような値を持っています。表示されているのは、表示形式に合わせて調整してある数値です。
Excel側に原因があったのですね。お手数をお掛けし申し訳ありませんでした。
Offline
Pages: 1
[ Generated in 0.008 seconds, 11 queries executed - Memory usage: 517.4 KiB (Peak: 521.94 KiB) ]