• ベストアンサー

Float型からString型への変換

Float型からString型に変換したいのですが、現在はSystem.out.printで表示すると Float型 -1.824667 String型 -1.824666976928711 となっています。 System.out.printで表示された値と同じ値をString型にしたいのですがどのようにすればいいのか教えていただけないでしょうか。

noname#12570
noname#12570
  • Java
  • 回答数1
  • ありがとう数0

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

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.1

おそらく浮動小数点関係の誤差による現象だと思うのですが、 発生条件がよくわかりません。 手元で Float f = new Float(-1.824667); String s; s = f.toString(); System.out.println("Float : " + f + ". String : " + s + "."); としたところ、どちらも同じ値が出ました。 そうなるコードを書き込んでください。

関連するQ&A

  • 小数5桁以上のString型をFloat型に変換する方法を教えてください

    "0.000004"のString型をFloat型に変換しようとしたのですが、 結果は 4.0E-6 になってしまいました。 0.000004 の数字を取得したいのですが、調べても方法が分かりません。。 【式】 Float.parseFloat("0.000004"); お助けください。 よろしくお願い致します。

  • String または byte[]を16進に変換するには

    String または byte[]をデバッグ目的で16進に変換するには、1文字ずつ処理すればいいのですが、ヘキサ表示なんてだれもが行うものですからすでにライブラリ化されていないでしょうか? sun.misc.HexDumpEncoder クラスは見つけたのですが、このほかに16進変換に使えるクラスはありませんでしょうか。(apache-commonsなら安心して使えるのでうれしいです) HexDumpEncoder encoder = new HexDumpEncoder(); String encoded = encoder.encode("abcde".getBytes()); System.out.println(encoded); 出力 0000: 61 62 63 64 65 希望としては 0000:  は不要なので 61 62 63 64 65 6162636465 0x6162636465 などに変換できると助かります。

  • int型の値をStringに変換して表示しようとしたけど

    すごく初歩的なことなんですが、int型の値をString型に変換して TextFieldに表示させたいんです。 やり方としてはStringの値をわざわざint型に変換し、その値をさらに String型に変換しているんです。値は、文字列の先頭に”0”が付いて いるため、画面上表示させる時には、先頭ゼロを削除したいんです。 つまりStringの値は”0123.58”です。これを最終的に”123.58”と してやりたいんです。 そして、上記を下記のようにやってみた所、TextFieldはぴくりとも動 きませんでした。 String testA = "0123.58"; int suji = Integer.parseInt(testA); String kotae = new Integer(suji).toString(); textfield_A.setText(kotae); お手数ですが、どこがいけないのか?教えてください。

    • ベストアンサー
    • Java
  • char型配列をString型にしたい

     VC++2005ExpressEdition + PlatformSDKを使用しています.  char型配列をString型にしたいと思っています(MessageBoxで表示するため).  int型ならば, > String^ out = String::Format("{0}", i ); > MessageBox::Show(out); などとできます.  下のアドレス(*1)のNo.2の答えにあるように > char ss[256]; > String^ out; > out=ss; とすると > error C2440: '=' : 'char [128]' から 'System::String ^' に変換できません。 なるエラーが出ます(S を大文字にしたりハットを付けたりしています).  char型の配列のString型への変換はどのようにすればいいのでしょうか. (*1)http://oshiete1.goo.ne.jp/kotaeru.php3?q=479640

  • VC++ std::stringからLPCWSTRに変換

    Visual C++ 2008を使用してTextBoxからの値(System::String)をmciSendString(LPCWSTR)に渡したいと思っています。 そこで自分はSystem::Stringをstd::stringに変換しそれから渡そうと思っているのですが・・・ 『error C2664: 'mciSendStringW' : 1 番目の引数を 'std::string' から 'LPCWSTR' に変換できません。』 のようにエラーが出ます。 当然そのまま与えてるので出るのは当たり前なのですが、キャストや変換の仕方が分からず調べ様にも困っている次第です。 C++に今回始めての挑戦で、右も左も分からないのですが、もしよろしければご指南頂けませんでしょうか?

  • [VB.net] StringからByte配列への変換

    皆さんこんばんは。 最近VB.NET2000でVisual Basicをはじめたのですが、どうにもString型の値をByte配列へ変換するやり方が分かりません。 VB6.0だとByte配列にStringを代入するだけでいいそうなのですが、.NETで代入しようとすると『型"String"の値を"Byteの1次元配列"に変換できません』というビルドエラーが表れてしまいます。 CByte( Mid(str,i,1) ) CLng( Mid(str,i,1) ) 他にも上記コードのように一つずつ変換しようと試みたのですが、String中のある文字がワイドバイトらしく、System.InvalidCastExceptionが表れてしまいます。 ("『"を上下反転したような文字) ワイドバイトのStringを1バイトずつ区切ってByte配列やLong配列へ格納する手法というものはありませんでしょうか。 よろしくお願いします。

  • float型の桁調整について

    float型の1.2345という数値を小数第2位まで表示したい場合、 System.out.printf("%1.2f\n", 1.2345); とでもやってやれば、 1.23 と表示されます。 では、これは表示ではなく、float型の変数に格納したい場合どのようにやってやればいいでしょうか? 例:1.2345→1.23にしてfloat型の変数に格納 また、同じくfloat型で、指定した桁数以降を0に置き換えるというのはどのようにしてやればいいでしょうか? 例:4桁目以降を0にする    123456→123000 よろしくお願いします。

    • ベストアンサー
    • Java
  • byte配列→float型の値を読みlongに変換

    UTF-8 encodingで書かれたテキスト分とfloat型 (IEEE-754/octet-stream)で書かれたバイナリ分混ざったファイルがあります。そのファイルをdataInputStreamを使って読んで、byte配列に保存されています。 FileInputStream fis = new FileInputStream(ファイル); DataInputStream dis = new DataInputStream(fis); byte[] bs = new byte[適切なサイズ]; //読み込み dis.read(bs); byte配列「bs」のindex 0 から 5までテキスト情報(XML式のヘッダー情報)あると仮定します。 UTF-8の分は for loop で "new String(bs, loop index, 1, "ASCII")"すると読み取れます。 問題は以下: index 6 から 17まではfloat型のバイナリデータ保存されているとします。 たとえば、index 6 から 順番に以下のHex string があります。 01 2A 5F 4E   B4 F2 45 4E   92 6A 5F 4E (4つのグループにしたのは分かりやすくするため) 上記float型のHex String をlong intに変換して、別途用意された配列に保存したい。 ネット検索でByteBufferにwrapメソッドを使って、getFloat(index) 又は getFloat()でfloat型取得できると書いていますがその先はどうやってlong int変換できるのでしょうか? 上記のHex string の変換後の値(取扱いしたい値)は19554126, 3035776334, 2456444750です。 今までのコード: long [] data = new long [既知のサイズ]; ByteBuffer b = ByteBuffer.wrap(bs).order(ByteOrder.LITTLE_ENDIAN); //なんらかのloop 又は ByteBuffer b の最後まで読める仕組み(remainingというメソッド?){ Float f = b.getFloat(); 又は Float f = b.getFloat(loop index); data[index] = fの longに変換した値 // つまり 19554126, 3035776334 .... } ネットで探していますが、やり方まだわからない。 どなたか、教えてください。 よろしくお願いします。

  • 10進数を2進数に変換するプログラムについて

    キーボードから入力された10進数を2進数に変換するプログラムで入力される数は1~1000の値までが入力できる数です。 配列を使うらしいのですがどのようにアルゴリズムをどのように表したらいいのかわかりません! import java.io.*; class Question7_3{ public static void main(String[] args){ BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); try{ System.out.print("数字を入力してください:"); } System.out.print("入力されたデータを2進数に変換すると:"); }catch(NumberFormatException e){ System.out.println("整数以外が入力されました。"); }catch(IOException e){ System.out.println("例外発生:" + e); } } }

  • VC++  System::Stringに変換するには?

    現在VisualC++ ExpressEditionを使って、C++の勉強をしながら万年カレンダーを作ろうとしていています。 ひとまずカレンダーの表示に使う月・日・曜日をDateTime::Nowから取り出したいのですが、 DateTime d1 = DateTime::Now.AddMonths; label1->Text = d1.ToShortTimeString; と試しにlabelに現在の月を表示させようとしたところ、 「1 番目の引数を 'System::String ^(__clrcall System::DateTime::* )(void)' から 'System::String ^' に変換できません。」 というエラーメッセージとともに弾かれてしまいます。 どこをどう変えればよいのか教えてください。 勉強を始めるのに買ってきた参考書では、DateTime::Now.ToLongTimeString;で日付から時刻まで繋げて表示する方法しか載っていませんでした(索引にもDateTime::Nowのみ) PCで検索しようとしても別の言語や参考書のHPが大量に引っかかって困っています。

専門家に質問してみよう