。行列はパーセント値を保持し、各行の値は100%の合計を持つ必要があります(パーセント値の後ろの数値を扱う場合は1)。このようなExcelワークシートを開いて各行に合計を作成すると、常に100%(1)になります。完璧。
しかし、私がワークシートを読み、シートから読み取った(ダブル)値を集計すると、ほとんどの行で1に有意な距離が得られます(重要な意味は、絶対的な距離が1から0.00000000001以上です)。
調査
私は私のパーセント値の後ろに番号を表示するには、Excelの行列を修正し、私はEPPlusを使用して読んだにそれを比較しました。たとえば、私は
99.86パーセントを持っていた(パーセントでエクセル)
0.998610811163197(番号などエクセル)
0.9986108111631975(EPPlusを読む)
私はAに私のExcelドキュメントを名前を変更ZIPをアーカイブし、解凍してVisual Studioでシートを開きました。保存された値は、私がEPPlusで得た値とまったく同じものでしたが、それは本当に驚くことではありませんでした。
解決策?
私はがExcelと同じように動作することを決めました。少なくとも、私はそれがとても優れていると思っていました。。私は15桁の後に値を丸めようとしました。しかし、十分に面白い、結果は私が持っていたいくつかの他の値を見た後、さらに悪化Excelのと同じではありませんでした:
0.00パーセント(%はエクセル)
0.00000330942432252678(番号などエクセル)
3.3094243225267778E-6(EPPlusを介して読み出さ、XMLに格納されている)
だから、質問は:Excelがそれらを表示するようExcelから値を丸めるまたは読み取りする方法は何ですか?ここで
は、Excelを読み取るための私のコードです:
using (ExcelPackage excel = new ExcelPackage())
{
excel.Load(File.OpenRead("data.xlsx"));
var a1 = excel.Workbook.Worksheets.First().Cells["A1"].Value;
var a2 = excel.Workbook.Worksheets.First().Cells["A2"].Value;
}
謝罪、私は後でそれを添付します、Dropboxのか、他の何かに私の職場から、現時点でExcelファイルをアップロードすることはできませんよ。
編集:hereはExcelドキュメントです。
は、なぜあなたは1×10^-16小数点以下を得るために悩ませていますか?地球から太陽までの距離を測定すると15ナノメートルに相当します。 – Enigmativity
@Enigmativityは、**私は**迷惑だと言った。私はそれを気にする必要があります。金融部門では、このような差はセント、合計で百万に達しています...そして、私が書いたように、私は行列を得ます。各行の合計は100%でなければなりません。これは.NET(/ XML)ではなくExcelで行います。 – MiGro
それをクリアしてください。あなたの質問はそれをしません。おそらく[尋ねる]を読んでいますか? – Enigmativity