質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

2128閲覧

式を計算して結果を出力したい

ActiveTK

総合スコア32

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2020/07/25 06:20

##やりたいこと/実現したいこと
(C#)
string型の計算式を計算して結果を出力したい
##現状
System.InvalidCastException: 指定されたキャストは有効ではありません。
##コード

C#

1string com = Console.ReadLine(); 2try 3{ 4 DataTable dt = new DataTable(); 5 decimal an = (decimal)dt.Compute(com, ""); 6 Console.WriteLine(an); 7} 8catch (Exception teste) 9{ 10 Console.WriteLine(teste); 11}

##現在のusingネイティブ

C#

1using System; 2using System.IO; 3using System.Data; 4using System.Threading; 5using System.Diagnostics; 6using System.Text; 7using System.Text.RegularExpressions; 8using System.Net; 9using System.Collections.Generic; 10using System.Timers; 11using System.Security.Permissions; 12using System.Security.Principal; 13using System.Runtime.InteropServices; 14using System.Runtime.InteropServices.ComTypes; 15using System.ComponentModel; 16using Microsoft.Win32.SafeHandles; 17using System.Runtime.ConstrainedExecution; 18using System.Security; 19using System.Security.Policy; 20using System.Security.Cryptography;

##環境
コンソールアプリ(.NET Flamework)

どなたかよろしくお願いいたします。
あと、何のusingネイティブが必要か教えて頂けるとうれしいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Daregada

2020/07/25 06:46

たとえば、「1 + 1」とかを入力して答え「2」を出したい、ということでしょうか? なぜ、DataTableを使おうと思ったんですか?
退会済みユーザー

退会済みユーザー

2020/07/25 06:47

何がしたいのか分かりません。以前の質問者さんのスレッドでもお願いしましたが、一度 https://teratail.com/help/question-tips を読んでください。ここに書いてないことは知り得ない第三者が読んで誤解なく分かるように質問を言語化するのはどうしたらよいか、よく考えて書いていただければと思います。
YAmaGNZ

2020/07/25 06:56

DataTable dt = new DataTable(); dt.Compute("1+1",""); で一応計算はできます。
ActiveTK

2020/07/25 09:52

ありがとうございます。 usingネイティブは、 using System.Data; だけで大丈夫でしょうか?
YAmaGNZ

2020/07/25 10:06

usingディレクティブが「using System.Data;」だけで大丈夫かどうかは私には判断できません。 DataTableを全部System.Data.DataTableと書けば「using System.Data;」も必要ないでしょう。 usingディレクティブがいったい何なのかを理解された方がいいかと思います。
ActiveTK

2020/07/25 10:18

いわゆる環境変数みたいな物と考えた方が良いんですか?
ActiveTK

2020/07/25 10:24

ありがとうございました。
guest

回答1

0

ベストアンサー

dt.Compute(com, "")は式の答えが整数の場合はint、小数を含む場合はdoubleを返します。
このintdoubledecimalにキャストしようとしたところでエラーが発生しています。
decimalに変換するのであれば、Convert.ToDecimalを利用されればよろしいかと思います。

また、不要なusingディレクティブの整理はこちら(Visual C# の IntelliSense)の「using の整理」の部分を参照してください。
DataTableに対するusingディレクティブの話であるのであればリファレンス(DataTableクラス)に名前空間が記載してあります。

投稿2020/07/25 06:53

YAmaGNZ

総合スコア10489

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ActiveTK

2020/07/25 09:53

ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問