2012-02-09 7 views
0

次のように私は、現在の構造を持つテーブルを持っています。現在、これが移入されMySQLは:私は、int型の列に入力する小数を必要

enter image description here

を次のように:

enter image description here

製品値のために格納されたデータは小数値の であり、末尾の数字はデータベースに挿入された時点で切り捨てられます。

私は次のようにテーブル構造を変更しようとしている:

enter image description here

次へしかし、この唯一のリード:

enter image description here

を使用すると、すべての値が追加さ.00を持って見ることができるようにもし存在しなければ、私は にこれらの値を小数点なしで格納したいと思います。製品の価値を除いて。

どうすればいいですか?

+6

あなたの混乱しているストレージと書式設定の問題は、正しい値を保存し、好きなようにフォーマット(表示)してください。 –

+0

あなたはoutputValue(18,0)を試しましたか? –

+0

しかし、データベースから値を選択して、 '.00'なしで画面に出力したい場合は、毎回' round() '関数を適用する必要はありませんか? – NeverPhased

答えて

0

問題は、小数点(浮動小数点数/倍精度浮動小数点数)を整数に変換しているため、値が切り捨てられている(小数点が切り捨てられる)。それを挿入する前に100によって

乗算数、および除算に確認してください。

あなたが本当にあなたの周りに、このハックの仕事がうまくいく使用できるデータベースにフロート(小数点以下の値)を使用しない場合あなたがデータを使用するときにそれを100で表します。これにより、整数ストレージを使用しているときに2小数点を維持することができます。

したがって、2.4は20.74は2074などとなり、53は5300になり、240として格納されるだろう...

私は、これは理想的なソリューションではなく、ハックではないことに注意したいです。

他のユーザーがコメントに示唆したことを強くお勧めします。小数点値を格納しておき、それを表示するときに書式設定することを強くお勧めします。また

--- ---

あなたの本当の問題は、データベースがセットアップされている方法であるように思われます。

これらの値のそれぞれは、製品ごとに繰り返されるため、独自のフィールドが必要です。

関連する問題