2017-11-08 10 views
0

EF6で構築したデータベースにパーセンテージ値を保存します。EF6フロート値を挿入する

ので、私は定義された:

[Column(TypeName = "float")] 
[Range(0, 1)] 
public float RepeatedPointValuePercentage { get; set; } 

私はデータベースに0.12を挿入した場合、テーブル内の値が値を挿入0.11999999731791

コード:

var o = new Object{ RepeatedPointValuePercentage = 12f/100;} 
//add to dbset & save changes 

私はどのように修正することができますそれは移行なしで?

+1

正確に何を修正しますか?値0.12は浮動小数点として正確に表現することはできません。0.11999999731791は十分に近いです。浮動小数点数が正確に0.12を表すとは限りません –

答えて

0

0.12は、浮動体フォーマットでは正確に表現できません。エラーではないので、これを修正する方法はありません。浮動小数点数の格納方法です。

本当に本当に整数のパーセンテージが必要な場合(私はお勧めしません)、それらを整数として保存することを検討してください(例:0.12を12として保存)。

1

NEVERは、フロートを正確に使用します。 @helperが答えたように、これはfloat値が格納される方法(近似値のデータ型)であり、それを修正するために何もできません。

ただし、代わりにこのシナリオを処理するDECIMALを使用できます。