• ベストアンサー

小数点以下桁数が最大の値に小数点以下桁数を揃えるにはどうしてますか

小数点以下桁数が最大の値に小数点以下桁数を揃えるにはどうしてますか 例えばSELECT文で取ってきた値が、 0.05と0.1だった場合は、0.1を0.10としたいです。 0.5と2だった場合は、2を2.0としたいです。 1と2だった場合は、1も2も、そのままとしたいです。

  • MySQL
  • 回答数2
  • ありがとう数16

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

変数はそのセッション内だけで有効なはずですが、まぁ使用したくないなら サブクエリになるんじゃないでしょうか? SELECT ROUND(num,(SELECT IF(MAX(LENGTH(num) - LENGTH(floor(num)))>0,MAX(LENGTH(num) - LENGTH(floor(num)))-1,0) FROM hoge)) as num FROM hoge

zyousuke
質問者

お礼

こんにちは。 私のSQLはダメダメでしたね・・・ いらぬ手間をとらせてしまいました。 当初の予想としては、汎用の関数が用意されていると思っていたのですが、 たとえ、欲しい関数がなくとも、知ってる関数を色々組み合わせて、1個の巧妙なSQL文が作れるのですね!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

一回桁数を変数にとってみるとか・・・ double型のnumというフィールドをつかって処理すると SELECT @KETA:=MAX(LENGTH(num) - LENGTH(floor(num))) FROM `hoge`; SELECT ROUND(num,IF(@KETA>0,@KETA-1,0)) as num FROM hoge; 見た目でもわかるとおり、あまりお勧めできないので受け取った側のミドルウェアで 処理するのが妥当だと思います

zyousuke
質問者

お礼

こんばんは! ご返信まことにありがとうございますm(__)m SQLで変数なんて使えるのですね! しかし、この変数はいつまで保持されるのだろうという恐怖があり、試してません^^; 代わりに2行目の@KETAという部分を、 MAX(LENGTH(num) - LENGTH(floor(num)))に置き換えて、 SELECT ROUND(num,IF(MAX(LENGTH(num) - LENGTH(floor(num)))>0,MAX(LENGTH(num) - LENGTH(floor(num)))-1,0)) as num FROM hoge という風にして試してみました。 私的にはこれで行けると思ったのですが、結果はnumの値(?)が1行返ってきただけでした・・・ やはり、結果セットを受け取った後のスクリプトの中で編集する方が無難ぽいですね。 個人的には、より高速な方をチョイスしようと思っていたところですが、どちらにせよ一瞬で終わってしまう処理だったり^^

関連するQ&A

  • Accessで小数点以下の桁数を・・?

    教えてください。 Accessで小数点以下の桁数を表示したいのですが、プロパティで小数点以下の桁数を表示することができるのですが、実際に入力すると値が四捨五入されてしまい小数点以下の桁数を入力することができません。どうしたらよいのでしょうか?

  • 小数点以下の桁数

    Excelの関数で指定したセルの小数点以下の桁数を返すようなものはありますか?例えば、「1.12345」だったら「5」と返すような・・・。

  • 小数点付の数字の桁数を揃える

    >10 を $suu=sprintf("%03d",$suu); このようにして3桁に揃えると >010 ですが、小数ありの数字を上の方法で桁数を揃えると >10.5 だった場合、小数点以下が無視され、 >010 と表示されます。それを、 >010.5 のように小数つきで桁数を揃えたいのですが、 どうすればいいのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 小数点以下の数字の桁数表示について

    VB6.0で小数点以下の数値が0の場合でも指定した桁数で0も表示するにはどのようにしたらよいですか? 例えば、四捨五入のROUND(0.195000,4)のとき返ってくる数値が「0.195」となり最後の0が表示されません。(以下は4桁表示したいのに) (小数点以下第5位が5なら切り上げで最後に1が表示されますが) エクセルだとセルの書式設定で表示桁数を設定するだけだったのですが。 FIXED関数、TEXT関数はVB6.0では使えないのですよね? VB6.0に詳しい方よろしくお願いします。お手数です。

  • EXCEL 小数点以下の桁数を条件によって変えるには

    G列の書式設定を数値、小数点以下0桁に設定してあります D列にある特定の文字が入力された時だけ、小数点以下の桁数を1桁にしたいのですが、どのようにすればよいでしょうか? それと小数点以下0桁、1桁の数字の桁位置をそろえることはできますか

  • printfの小数点以下の表示桁数につい

    Java超初心者です。宜しくお願い致します。 System.out.printf("%8f\n",15.8); は8桁表示のはずですが、 実行すると、 15.800000 と、いう風に9桁になります。 詳しい方はきっと当たり前と思うと思いますが、 小数点以下の桁数がどういう基準で決められるのか、 つまりゼロ(0)がいくつ並ぶか、というのがよくわかりません。 %12f に変更すると、    15.800000 と、左側にスペースが3つ入ります。 12桁と指定しても、小数点以下のゼロが5つだから、左にスペースが3つ入るわけですよね。 結局、小数点以下の桁数を指定していないのに勝手にゼロが並ぶので、 表示は実行してみるまでどうなるか解らない、という状況です。 規則というか、ルールを解りやすく教えて頂けると嬉しく思います。 宜しくお願い致します。

    • ベストアンサー
    • Java
  • EXCEL 小数点以下の表示桁数

    下記のような表があります   A   B    C  数値1 数値2 MAX(A:B)  0.20  0.98  0.20  0.38  1.7   1.7 というように、A,Bの値を比較して大きいほうをC列に表示させるのですが、小数以下の桁数をA,Bと同じにしたいのです。 小数第2位が「0」なら0、表示が1位までなら1位という感じです。 条件によって桁数を変化させることは出来るのでしょうか。

  • VB.NETで小数点以下の桁数を取得したい

     こんばんは。 VB.NETで1つ教えて下さい。 小数点以下の桁数を取得したいのですが どのようにすると良いのでしょうか? 例えば 1.5なら1 2.12なら2 2.555なら3と取得したいのです。 解るかたおられましたら ご教授、宜しくお願いします。

  • 「銭」単位に小数点の桁数を揃えることは不可?

    ご回答ありがとうございます。 「280円80銭」は「280.80円」として表すことができます。 「280.8円」の表記は「280円80銭」となるのでしょうか? また桁数が増えた場合、たとえば「1,123.20円」は「1,123円20銭」となりますが、「280.80円」を「1,123.20円」の小数点以下の桁数に合わせるとすると「280.800円」となります。しかし 「1銭は旧1円の100分の1補助貨幣としては終了しています。 現在補助貨幣としては1円が最小単位です。 」 とのことです。小数点以下の桁数を合わせることは銭以下の単位を使うことになりますがそれができない以上、桁数を合わせることはできないのでしょうか。

  • 小数点以下の値を判断したいです

    DBから取得する値が3ならば3と、3.5なら3.5と取得したいです。 この時にint型で取得すると小数点以下が切られてしまいます。 double型で取得すると3.5は3.0となってしまいます。 どうしたらよいのでしょうか? 整数値であればintで小数値を含むならばdoubleで取得するようなロジックにしようかと思っているのですが、小数点以下の値を判別させる方法はありますでしょうか?