問題タブ [atof]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - ロケールに依存しない「atof」?
私は固定 NMEA センテンスで GPS ステータス エントリを解析しています。ただし、ロケールがコンマを小数点記号として定義しているシステムでは、atof関数はピリオドと小数部全体を無視します。
この問題に対処する最善の方法は何ですか? 必要に応じて、文字配列に格納された経度/緯度の文字列。
コード例:
どこ
Windows XP および CE 用にコンパイルされたクロスプラットフォーム プロジェクト。
ソリューションへのコメント:
受け入れられた回答はよりエレガントですが、この回答(およびコメント)も簡単な修正として知っておく価値があります
c++ - 文字列をdoubleに変換するC++エラー
文字列をdoubleに変換しようとしています。コードは非常に単純です。
余分に変換しようとすると、コンパイラはこの知恵の宝石を私に投げます:
エラー:extra.std :: basic_string <_CharT、_Traits、_Alloc> :: operator [] [with _CharT = char、_Traits = std :: char_traits、_Alloc = std :: allocator](((unsigned int )(i + 1)))、これは非クラスタイプのcharです
それが何を意味するのかわかりません。extra [i + 1]をcoutすると、3になります。extraを文字列として残すと、プログラムは最初に(2)を51(ascii for 3)で除算しようとします。一体何が起こっているのですか?
c - 巨大なchar配列をfloatに変換する方法を知っている人は誰でも、非常に巨大な配列で、atof / strtod/sscanfよりも優れたパフォーマンスを発揮します。
私はchar配列を取得しました。これは、次のようなtxtから読み取られた巨大な配列charp[n]です。
foo(char * p、float x、float y、float z){
}
atof、strtodを使おうとしましたが、配列が大きすぎるとstrlen()を呼び出すため、リアルタイムで時間がかかります。sscanfも非常に遅いです。
コードをデバッグすると、atof()とstrtodの両方がビジュアルスタジオでstrlen()を呼び出していることがわかり、crtコードを確認できます。
私もstrtokを使おうとしていますが、1.txtのデータを変更しないでください。
したがって、これらすべてをfloat x、y、zに変換する最良の方法は誰にでもあります。
Visual Studio 2008 + WIN7
c - C を使用した科学表記法で "E" の代わりに "D" を使用して ASCII 数値を読み取る
次のような数字のリストがあります:1.234D+1
または1.234D-02
. C を使用してファイルを読みたいと思います。この関数atof
は単に を無視しD
、仮数のみを変換します。
指数に a ではなく aが必要なため、この関数fscanf
はこの形式を受け入れません。'%10.6e'
E
D
Python でこの問題に遭遇したとき、あきらめて、文字列から浮動小数点数に変換する前に単に文字列置換を使用しました。しかし、C では、別の方法があるに違いないと確信しています。
では、科学表記法D
の代わりに数字を使用してファイルを読み取るにはどうすればよいでしょうか。E
文字列自体を読み取る方法ではなく、浮動小数点数に変換する方法を意味していることに注意してください。
ありがとう。
c - 値のスキャン、チェック、変換、コピー ... 方法 ? -- C --
しばらく経ちましたが、まだ特定のコードを機能させようとしています。以前、さまざまなコマンドなどについていくつか質問をしましたが、これが最後の質問になることを願っています (すべての質問を 1 つのコードにまとめます)。
私は基本的にしたい:
*入力をスキャンします (文字である必要がありますか?)
*番号かどうかを確認してください
※そうでない場合はエラーを返す
*その文字を浮動小数点数に変換します
*値を別の変数にコピーします (ここでは imp と呼びます)
これが私が思いついたものです:
編集されたコード*
問題は、このコードがまったく機能しないことです... atof は const char でなければならず、変更しようとすると失敗し続けます。私は多くのことを試して失敗し続けていると信じているので、イライラしてここで質問せざるを得ませんが、うまくいくまで安心することはできませんxDだから、あなたの助けが本当に必要です.
このコードが機能しない理由を教えてください。何が間違っているのですか? 私はまだCを学んでおり、あなたの助けに本当に感謝しています:)
atmを指定した編集 エラーは次のとおりです。
Argument no 1 of 'isdigit' must be of type 'const int', not '<ptr>char'
編集 このコードは正常にコンパイルされますが、入力が入力されるとクラッシュします。
c - ファイルの読み取り、データの取得、計算の方法
私は本を読んでいますが、これを試してみてください: (英語ではないので翻訳しました)
生徒数 n を要求し、n 人の生徒を動的に選択するプログラムを作成します。名前は 10 文字で、メモは 5 文字です。
上記の選択内容からテキスト ファイル note.txt を作成し、10 文字になるようにハイフンを追加します (名前用)。
次に、ファイルを読み取り、そこから (のみ) 合計を計算します。次に、メモが 10 以下のものの名前とメモを表示します。
createStudent、createFile、readFile の 3 つの関数を実装する必要があります。グローバル変数は使用しないでください。
構文 : 名前は char nom[10+1] として宣言する必要があります (つまり、James。10 文字を取得するために 5 つのハイフンが追加されます) => james----- および注: char[5+1] (つまり15.00 または 07.50)
ヒント : メモをテキスト形式から浮動小数点形式に変換するには、atof 関数を使用できます。
createStudent 関数と createFile 関数を作成しました。それらはうまく機能しますが、最後の部分 (readFile 関数) がわかりません。
私のテキスト ファイルは次のような形式です: Bart------ 04.50 Lisa------ 18.00 Homer----- 03.00
コンパイルはできますが、動作せず、その理由がわかりません :( C 言語は Java や C# に比べて非常に面倒だと感じています。
ライトをください。
c++ - 「2.12e-6」のような文字列をdoubleに変換する
「2.12e-6」のような文字列をdoubleに変換することを処理できるC++の組み込み関数はありますか?
c - stdlib.h を含めなくても、コンパイラ エラーは発生しません。
うまくいけば、これは非常に簡単な質問です。以下は、私が持っている C pgm (test.c) です。
stdlib.h の atoi() と atof() を使用していますが、そのヘッダー ファイルは含めていません。pgm (gcc test.c) をコンパイルしましたが、コンパイラ エラーは発生しません。
pgm (./a.out) を実行すると、間違った出力が表示されます。
ここで、(#include の前のコメントを削除して) stdlib.h をインクルードし、再コンパイルして再度実行します。今回は正しい出力が得られます。
stdlib.h が含まれていないことについてコンパイラが文句を言わず、atoi()、atof() 関数を使用できるのはなぜですか?
私のgcc情報:
どんな考えでも大歓迎です!
c - argv[]の内容をCのfloat[][]に変換できません
私は行列を乗算するプログラムを実行していますが、私の大きな問題は、入力から最終的に乗算する2つの配列に変換することです。以下は、配列の宣言を含む変換用の私のコードです。(デバッグしているので、入力が8つの有効なフロートであるという検証を削除しました)。
コンパイル時にatofを使用すると、「添え字付きの値は配列でもポインタでもありません」というエラーが表示されます。エラーを調べていましたが、私の場合の意味がわかりません。
c - ansicの変換の問題
重複の可能性:
浮動小数点の不正確な例
JavaScriptの数学は壊れていますか?
txtファイルのデータをdouble値に変換する必要があり、この関数を使用しています:atof。問題は、変換する必要のある値が5.550000であり、atof関数が5.5499999999999998を返すことです。これは、この数値を使用してGPAを計算する必要があり、結果が正確ではないため、問題です。これは、txtファイルからデータを読み取る関数です。