プロが教えるわが家の防犯対策術!

いつもお世話になります
VS2010_C#でプログラムを作成しているものです

文字列を倍精度実数に変換することにつまづいています
double dblValu = double.Parse("-24.456E+0",System.Globalization.NumberStyles.AllowExponent)とすると"FormatExceptionハンドルされませんでした"、かつ"入力文字列の形式が正しくありませんでした"という結果になりました。
入力文字列の先頭が符号付であるので以下のように
double dblValu = double.Parse("-24.456E+0", System.Globalization.NumberStyles.AllowLeadingSign & System.Globalization.NumberStyles.AllowExponent)としても
結果は変わりませんでした

申し訳ありませんがご教示いただきたく、よろしくお願いします

A 回答 (3件)

理由がなければ、style指定は不要かと思います。


var value = double.Parse("-24.456E+0");
Console.WriteLine(value.ToString());

style引数を指定する場合は、解釈に要するスタイルをすべて指定してあげないとダメですよ。
var value = double.Parse("-24.456E+0",
NumberStyles.AllowLeadingSign | NumberStyles.AllowDecimalPoint | NumberStyles.AllowExponent);
Console.WriteLine(value.ToString());
    • good
    • 0
この回答へのお礼

nektak様
お世話になります
本件、計測器との通信で戻りデータを数値化でのエラーでした
繰返し測定で時折、エラーがないことがわかり、データを調べていくと計測値が
一定以下になると空白が文字列途中に含まれることが原因でした
スタイルの指定に関して”すべて指定する”こと、思いもしませんでした
ご教示いただきましてありがとうございます

お礼日時:2017/08/21 11:50

単純に


double dblValu = double.Parse("-24.456E+0");
でいいような気がするんだけど....
    • good
    • 0
この回答へのお礼

Tacosan様
お世話になります
本件、計測器との通信で戻りデータを数値化でのエラーでした
繰返し測定で時折、エラーがないことがわかり、データを調べていくと計測値が
一定以下になると空白が文字列途中に含まれることが原因でした
最初は"Tacosan"様のご指摘のようにスタイルの指定はしてませんでしたが
解決できなかったのでスタイルが必要、とおもいました
結果として私の確認不足でした・・・お騒がせしてすみません
ご教示いただきましてありがとうございます

お礼日時:2017/08/21 11:55

ちょっと手許では試せないけど


https://msdn.microsoft.com/ja-jp/library/system. …
の内容をいろいろ試しては?
AllowDecimalPoint 小数点を有効に
あたりがあやしいです。
Float にも AllowDecimalPoint が含まれていますし。(というか、Floatでいいのでは?)

あと、上記のサンプルにあるように、 複数指定するのは and ではなく or です。
    • good
    • 0
この回答へのお礼

kmee様
お世話になります
本件、計測器との通信で戻りデータを数値化でのエラーでした
繰返し測定で時折、エラーがないことがわかり、データを調べていくと計測値が
一定以下になると空白が文字列途中に含まれることが原因でした
ご指摘、ありがとうございました・・うまくいかなくて舞い上がっていました
今後、気をつけます・・
ご教示いただきましてありがとうございます

お礼日時:2017/08/21 11:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!