No.4ベストアンサー
- 回答日時:
ああ、「?」の存在を忘れていました。
そうそう
if ($val =~ /^(-|\+|)\d+\.?\d*(E\+\d+|E\-\d+)?$/i){
だと、
-1.E+12
というのも引っかかります。
もちろんPerlとしては数値として扱われるので大丈夫ですが。
しかし、
-.5E+12
というのもPerl的には正しいはずなのに、こちらは引っかかりません。
-12E-4.5
-12E-.5
これらも正しいのにだめです。
どこまでのを求めますか?(^^;
if ($val =~ /^(-|\+)?(\d+\.?\d*|\d*\.?\d+)(E\+(\d+\.?\d*|\d*\.?\d+)|E\-(\d+\.?\d*|\d*\.?\d+))?$/i){
こうかもしれない・・・
すごいですぅ~!
判定したい値は全てOKでした♪
> どこまでのを求めますか?
十分ですっ。
本当に、本当にありがとうございました。
No.3
- 回答日時:
補足です。
俺の#2の回答についてですが、プラスマイナスの符号に対する処理が抜けてます。ミスでした(^_^;
if ( $val =~ /^(\+|\-)\.?\d+\.?\d*(E\+\d+|E\-\d+)?$) {
いちおー別の方の回答が出ているようですが、念のためにフィックスしておきます。
ありがとうございます。
アドバイスを頂いたおかげで、解決できました。
結局、
if ($val =~ /^(-|\+|)\d+\.?\d*(E\+\d+|E\-\d+)?$/i){
にしてみました。
もうちょっと、テストしてみてOKなら、これにします♪
No.2
- 回答日時:
Perl は、変数はすべて(VBでいうところの)バリアント型なので、タダで判別する関数はありません。
指数を含むというのが面倒ですね(^_^;
こういうのはどうでしょう。
if ( $val =~ /^\d+\.?\d*(E\+\d+|E\-\d+)?$) {
これで真なら数値ということになると思うんですが……。
ありがとうございます。
if ($val =~ /^\d+\.?\d*(E\+\d+|E\-\d+)?$/i){
でやってみました。
ただ、「-1e-007」というような値を判別すると、文字列と判定されてしまうのですが。。。
※「1e-007」は数値と判定されました。
No.1
- 回答日時:
/^(-|\+|)\d+(\.\d+|)(e\-\d+(\.\d+|)|e\+\d+(\.\d+|)|e\d+(\.\d+|)|)/i
マッチングだとこんな感じ?
#「.25」なんて0を省く場合を除いて
もっとスマートに書けそうだが・・・
早速のご回答、ありがとうございました。
上記のマッチングで判定してみると、「-1.00ee-7」が数値として判定されてしまいました。(;_;)
結局、i_am_alive さんと、deagles さんの回答を混ぜて
if ($val =~ /^(-|\+|)\d+\.?\d*(E\+\d+|E\-\d+)?$/i){
にしてみました。いまのところ、問題ないみたいです。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- 数学 2変数関数の条件つき極値問題について、 ラグランジュ未定乗数法で候補点を求めたあと、 ①ヘッセ行列の 4 2022/11/13 18:14
- Excel(エクセル) VBAで “:” を含むセルの特定 2 2023/05/11 16:30
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- Perl perlでリテラル値はメモリにどのように格納されているか? 1 2023/01/15 20:45
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
VB2005 DataGridView上でクリッ...
-
別フォームから戻ったときのイ...
-
Sleep関数の最大時間について
-
excelのタスクバーアイコンが・...
-
マイページはどこを開くの
-
ウインドウを毎回同じ位置、大...
-
エクセルのシート上に別のシー...
-
デジタル時計の時刻合わせの方...
-
エクセルVBAでフォームのListbo...
-
Javascript_submit()完了後に処...
-
Excelでワードアートや図を常に...
-
VBA ポップアップが表示された...
-
小さな表示窓の呼び方は
-
同じページをブラウザで複数開...
-
一定時間おきにアラームやポッ...
-
ポップアップウィンドウがブロ...
-
リストビューをスクロールさせ...
-
スクリプトって、何ですか?ど...
-
Visual Basicから Spreadのスク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「Cancel = True」とはどういう...
-
別フォームから戻ったときのイ...
-
VB2005 DataGridView上でクリッ...
-
excelのタスクバーアイコンが・...
-
Perlで数値(小数点、負の数、...
-
VB6.0のEnabledをfalseにしても...
-
VBAでIEの「Web ページからのメ...
-
エクセル アプリケーションの...
-
【ImageMagick】 PDF → JPG 変...
-
【C#】ラベルのダブルクリック...
-
Perlでページ処理がどうしても...
-
vba IE操作で こういう事って...
-
別ページからのタブ切り替えの...
-
処理終了後のに砂時計が、クリ...
-
数千行HTML 画面表示の性能改善
-
javascriptの中で、perlのコマ...
-
C# マウスオーバーの記述方法
-
実行中のOSを知るには?
-
C++での連続した左クリックの禁...
-
Sleep関数の最大時間について
おすすめ情報