|
■No73528 (魔界の仮面弁士 さん) に返信
> 数値を文字列として出力する場合の桁数を明示したい場合は、
> Oracle では TO_CHAR 関数を使います。
> .NET では String.Format や、ToString(書式) メソッドなどですね。
DataTable 側を System.Decimal 列で定義しておき、
Oracle 側からは、TO_CHAR した文字列を代入するようにすれば、
一時代入の段階では、書式を一致させることが出来ます。
でも、そこまでして一致させないといけないものでしょうか?
12.10 でも 12.1 でも、値としては同じですよね?
SELECT CAST('12.0000' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.1000' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.1200' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.1230' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.1234' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.1' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.12' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.123' AS NUMBER(10,4)) FROM DUAL UNION ALL
SELECT CAST('12.1234' AS NUMBER(10,4)) FROM DUAL
SQL/Plus での実行結果
--------
12
12.1
12.12
12.123
12.1234
12
12.1
12.12
12.123
12.1234
============================================
var dec = new decimal[]
{ 12.0000m
, 12.1000m
, 12.1200m
, 12.1230m
, 12.1234m
, 12m
, 12.1m
, 12.12m
, 12.123m
, 12.1234m
};
Array.ForEach(dec, Console.WriteLine);
// var tbl = new System.Data.DataTable();
// tbl.Columns.Add("dec", typeof(decimal));
// Array.ForEach(dec, d => tbl.Rows.Add(d));
コンソールへの出力内容
--------
12.0000
12.1000
12.1200
12.1230
12.1234
12
12.1
12.12
12.123
12.1234
ウォッチ式への表示内容
--------
12
12.1
12.12
12.123
12.1234
12
12.1
12.12
12.123
12.1234
|