初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2016-11-23 20:18:02

Horicchii
Member

CSV読み込みで誤数値?

OS:[Windows10]
FileMaker Ver:[13]

csv(EXCEL)の数値を含むFileをFMP13にインストールしたのですが、一部数値が誤っており、FMPのcellには「?」で表示されます。
なにか対策はありませんでしょうか?。


csv(EXCEL)の数値=278.6
FMPのセルの表示内容=?
セルにカーソルを当てると=278.60000000000002と表示されます。

Offline

#2 2016-11-23 20:52:13

シャチ
Member

Re: CSV読み込みで誤数値?

FMPかEXELかどっちが変かわからないけど
これは2進演算の誤差範囲ではないかと
フィールドの数字書式をインスペクタの<データ>の一番下にある
書式をいろいろ変えてみてはいかがかと思います。

Offline

#3 2016-11-23 23:28:45

Horicchii
Member

Re: CSV読み込みで誤数値?

シャチ さん

ありがとうございます。
数値セルに対するインスペクターの「データーの書式設定」では
小数点以下の桁数を「2」としています。
ここで制限をかけていても、上述の様に、下3桁以下に変な数字X.99999999999とかが入力されてしまうのです。
FMPの欠陥(バグ)ではないかと思うのですが…?。最新のFMPではこの様な事が無いのでしょうか?。
なお、数値セルには3桁区切りも設定しています。
※Excel(CSV)側では小数点以下は1桁です。どのセルもこれ以上の桁数値はありません。

Offline

#4 2016-11-24 00:09:27

Shin
Member

Re: CSV読み込みで誤数値?

Excel 側の問題です。Excel は、数値を純粋に2進数で持たせていますので、小数はそのような値を持っています。表示されているのは、表示形式に合わせて調整してある数値です。
書き出しなどの際には元の数値を出しますので、無限小数になる事があります。
FMP側で対処するしか無いでしょうね。例えば、小数点以下3桁目を4捨5入しておくとかなどを、自動入力の計算に仕込んでおき、インポートの際にオプションで自動計算をオンにしておきます。

Offline

#5 2016-11-24 09:55:24

tim
Guest

Re: CSV読み込みで誤数値?

CSVなのかExcelなのかはっきりしませんが、CSVで278.6と入ってればFMにもそのまま入るのでは?
Excelで278.6と入れてCSVに保存してもそのまま出てきたけど。
実際はCSVでなくExcelから直接インポートしてませんか?

#6 2016-11-25 00:12:58

Horicchii
Member

Re: CSV読み込みで誤数値?

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

#7 2016-11-25 09:06:01

Shin
Member

Re: CSV読み込みで誤数値?

csv に書き出した時に,その数値になっています。FMP側で Round() 関数で処理しておく以外無いでしょうね。

Offline

#8 2016-11-25 09:40:05

tim
Guest

Re: CSV読み込みで誤数値?

Excel2013で例えば1/7の計算式を入れてCSV保存しても、表示通りに保存されるけど。セルの書式で無理やり桁数を増やすと 0.14285714285714300000 のようになる。
Excelのオプションの詳細に「表示桁数で計算する」というのがあるから、オンにしてみたらどうかな。

#9 2016-11-25 19:18:13

Horicchii
Member

Re: CSV読み込みで誤数値?

tim さん
Shin さん

皆さん、度々ありがとうございます。
>実際はCSVでなくExcelから直接インポートしてませんか?

すみません、次のような事を行いました。
1.
①dataファイル(EXCEL)を開き、Excelのオプションにて「詳細設定-表示桁数で計算する」に設定。
②上書き保存。
③FMPV13でファイルのEXCELファイルのインポートを実行。
※結果、数値化けに変化はありませんでした。

2.
①dataファイル(EXCEL)を開き、Excelのオプションにて「詳細設定-表示桁数で計算する」に設定。
②Excelのファイル種を「csv」にして保存。
③FMPでインポート設定時、ファイル種を「csv」にして、csvファイルのインポートを実行。

※結果、数値化けは起きませんでした。

>Excel 側の問題です。Excel は、数値を純粋に2進数で持たせていますので、小数はそのような値を持っています。表示されているのは、表示形式に合わせて調整してある数値です。

Excel側に原因があったのですね。お手数をお掛けし申し訳ありませんでした。

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.008 seconds, 13 queries executed - Memory usage: 517.67 KiB (Peak: 522.21 KiB) ]