• ベストアンサー

SQLiteのREAL型について

SQLiteのREAL型についてC#プログラミングでfloat型として扱う場合に、 Insert文でREAL型に「9999999.999999」と値を入れた場合に Select文で値を取得すると、「1E+07」で返ってきました。 「9999999.999999」という値で取得する方法がわからないためご教授いただきたいです。 申し訳ございませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

http://msdn.microsoft.com/ja-jp/library/b1e65aza.aspx > 有効桁数: 7 桁 です。 9999999.999999 を入れようとしたら、途中で打ち切って概数にする必要があります。 9999999.999999 を有効数字7桁にするには、 9999999 で .999999 を四捨五入するとかする必要があります。 四捨五入すれば 10000000 です。 これは 1.0 * 10の7乗 であり、これを「指数表現」という方式で表現したのが 「1E+07」 です。 対策ですが ・C#でfloatを使うのなら、あきらめるしかありません。 ・doubleを使うと、SQLiteのREALと同じ精度になります。

Dmix
質問者

お礼

わかりやすいご説明ありがとうございました。 すごく参考になりました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#212058
noname#212058
回答No.1

情報が不足しすぎいます。 ・C#で使っているSQLiteのドライバは何ですか? System.Data.SQlite.dll ? ・INSERTはC#コードで実行していますか? ・SELECTはC#コードで実行していますか?  また、そのコードはどのようなモノでしょうか?  ↑C#でSELECTしているのであれば、ここの記述を   間違えている可能性が高いでしょう ・コマンドラインなど別の方法で SELECTした場合の  結果はどうなっていますか?

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • SQLiteのLike句で抽出できない

    SQLiteのLike句で抽出できないレコードがあります。 原因についてご教授いただけますでしょうか。 以下、操作手順になります。 ■データベースの作成 C:\>sqlite3.exe member.db SQLite version 3.7.15.2 2013-01-09 11:53:05 Enter ".help" for instructions Enter SQL statements terminated with a ";" ■テーブルの作成、レコードの追加 sqlite> create table t_member(name text, age integer); sqlite> insert into t_member values('山田一郎', 25); sqlite> insert into t_member values('田中次郎', 35); sqlite> insert into t_member values('鈴木三郎', 45); ■検索 sqlite> select * from t_member where name like '%一郎'; 山田一郎|25 sqlite> select * from t_member where name like '%次郎'; 田中次郎|35 sqlite> select * from t_member where name like '%三郎'; sqlite> 三郎だけが検索条件に適合しないのは何故でしょうか。 よろしくお願いします。

  • SQLite C/C++ でのテーブル数の取得

    よろしくお願いします。  テーブル名「TB1332」の有無を確認するSQL 文をこのようにしました select count(*) from sqlite_master where type='table' and name='TB1332'; PupSQLite でのcount(*)の値 当該テーブルが存在する場合 1 当該テーブルが存在しない場合 0 このように正しい結果が得られます。 しかし、Visul Studio 2010 C++ で下記のコードを実行しますと、result の値は、テーブルの有無に関係なく、常に0となります。 int result = sqlite3_exec(pDb, "select count(*) from sqlite_master where type='table' and name='TB1332';", NULL, NULL, &err); C/C++ で該当する、テーブル数を取得するコードの書き方を教えていただけないでしょうか。 環境 C/C++ Visual Studio 2010 Proffesional SQLite3 PupSQLite https://www.eonet.ne.jp/~pup/software.html

  • php sqlite count 列数取得

    php5 apache2 sqlite xpの環境で、指定したテーブルをcountして行数ではなく、列数を取得したいのですが、調べても見つけることができなかったためご教授御願いします。 A B C 2 4 6 1 3 4 行でしたら select count(*) from tbl_a で「2」が取得できるのですが、「3」の列を取得したいのです。

    • ベストアンサー
    • PHP
  • phpからsqliteにselect抽出

    phpからsqliteにselect抽出しています。 $sql = "select * from Table where C=?" $st = $db->prepare($sql); $st->bindParam(1, $key, PDO::PARAM_STR); $st->execute(); while ($row = $st->fetch(PDO::FETCH_ASSOC)) { *** *** } でエラーにはなりませんが、データがとれません。 updateやinsertで?(インジェクション)はうまくいくのですが、Selectでなぜ取得できないのでしょうか? bindParamをarrayにしたりprepare をqueryにしたりしましたが、 データが1件しか取れなかったりします。

    • ベストアンサー
    • PHP
  • SQL(SQLite)である範囲のデータのみを取り出す

    SQL(SQLite)である範囲のデータのみを取り出す 実行環境はPerl5.8.9 + DBI-1.60.7、DBはSQLite です。 あるSELECT文によって十分多い(例えば100件以上の)データが取り出せるとして、 そのうち例えば41~50件目の10件だけを取り出したい場合、 どのようにするのが良いのでしょうか。 自分が思いつくのは、SELECT文をprepare,executeした後にfetchrow_arrayで 1~40件目を空読みしてから目的の10件を読み込むというやり方ですが、 もしSQL文だけで目的のデータのみ取り出せるやり方があれば教えてください。

  • JavaScriptでSQLiteの値を使いたい

    プログラミング初心者です。 JavaScriptで、ユーザーが入力した値に応じて金額を計算するプログラム(金額=アイテムの値段×個数、ユーザーはフォームにて個数を入力、アイテムの値段はSQLiteに存在)を書いているのですが、計算過程でSQLiteに保存してあるアイテムの値段(itemsテーブルの各アイテムのchargeカラムの値)を使用する必要があります。 これを実現するためにはどのような方法があるでしょうか。また、どの方法がベストでしょうか。 回答よろしくお願いします。

  • sqlite_query()に関する質問

    ブラウザからポストでSQL文を受け取り、それをもとにDBを作成するスクリプトを考えています。 スクリプトの実行権限は、ページにログインできたユーザ(サイト管理者)のみ与えられています。 では、質問に移ります。 スクリプトに渡される$_POST['sql']の値が、クエリ文の言語仕様的に正しい書式ではなかった場合、 $sql = sqlite_escape_string($_POST['sql']); sqlite_query('hoge',$sql); の結果は、 Warning: sqlite_query() [function.sqlite-query]: near "なんたら~": syntax error in /なんたら~ といったエラーを吐き、 さらに、ファイルサイズ0の余計なクズファイルが作成されてしまうのですが、、 このクズファイルが結果的に作成されないように設計するには、どのようにしたら良いでしょうか。 私なりに2つの方法を考えてみましたので、アドバイスを頂けると嬉しいです。 (1) $_POST['sql']の時点で正規表現をもとに、SQL文の書式が正しいかチェックをし、 誤った書式のSQL文をsqlite_query()に渡すことを回避する方法。 ※私の能力的に、希望とする正規表現を正確に考え出すことができるか、はなはだ怪しいため、 できれば、避けたい方法です。 (2) 正規表現を使った方法だと、やや繁雑になりそうなので、それはやめにし、 ひとまず、SQL文の正誤を問わず、sqlite_query()を実行させ、 その結果、クズファイルが出来てしまうようなら削除する、といった方法。 ※クズファイルが生成されたかどうかのチェックは、 生成されたファイルのファイルサイズ == 0? をもとに行います。 ※ただし、私の利用するサーバの仕様上、 クズファイルは 所有者=「apache」 として作成されてしまうため、 もしかしたら、スクリプトからは削除できないかもしれません。 その場合には、こちらの方法は廃案となります。汗 (3) その他の方法(オススメの方法がありましたら、是非教えて下さい!) 以上、どなたか、ご助言よろしくお願い致します。

    • ベストアンサー
    • PHP
  • SQLite3(PDO)でクエリー件数を取得したい

    SQLite3をPHPで使用しています。 ネットでいろいろ見たのですがわかりませんでしたのでこちらで質問させて頂きました。 SELECTで条件に合うidを抽出した場合にその行数を取得したいのですが、どのようにするとスマートに取得できるのでしょうか? スマートにというのは「データベースへのアクセスが一度で済むような」という意味です。抽出データの取得と件数の取得が一度のアクセスで可能なのでしょうか? $pdo = new PDO(sqlite:test.db); $query = $pdo->prepare('SELECT id FROM testTable WHERE id > 0 AND id < 10'); $query->execute(); 私が現在行なっているのは、データ抽出は上記のコードでやって、件数の取得は以下のようにしています。 $query = $pdo->prepare('SELECT count(*) FROM testTable WHERE id > 0 AND id < 10'); $query->execute(); $num = $query->fetch(PDO::FETCH_NUM); echo $num[0]; ネットで調べてもMySQLやPostgreSQLのことしか載っていなく、なかなかSQLite3での取得方法がわかりません。 お手数ですが教えて頂ければと思います。よろしくお願い致します。

  • select insertで複数テーブルから値を取得したい

    環境:oracle9i select insertで、2つのテーブルから値を取得して、1つのテーブルにinsertすることは可能でしょうか? たとえば、以下の場合、どのようなSQL文を書けばよいか、アドバイスいただけますでしょうか。 よろしくお願いします。 insertしたいテーブル:A Aテーブルの項目:o,p,q,r,s,t 値を取得するテーブル:B,C Bテーブルの項目:o,p,q,r Cテーブルの項目:o,p,s,t oとpが主キーになっていて、それらが一致するBとCのデータを あわせて、Aにinsertしたいと思っています。 insert into A(o,p,q,r,s,t) select このあと、どのように書けばよいのかがわかりません。

  • SQLiteでINSERT OR UPDATE

    SQLiteにはREPLACE文がありますが、これを使うと、例えばn,c1,c2,c3フィールドがあるデータsampleに対して「replace into sample (n,c2) values (1,1)」を実行すると、c1とc3はnull値になってしまいます。 一部のSQLデータベースで用意されている「INSERT OR UPDATE」のように、行が存在すれば対象のフィールドのみを書き換え(それ以外のフィールドの内容は維持)、存在しなければ行を追加する構文を作ることは可能でしょうか。

レーベル印刷ができない
このQ&Aのポイント
  • レーベル印刷ができない問題について、ブラザー製品のDCP-J982Nを使用していますが、CD Labelerが起動しない現象が発生しています。
  • 他の印刷やコピー、スキャンは正常に作動しており、再インストールも試しましたが問題は解消しません。
  • 解決方法を教えてください。
回答を見る