C# Запись "\ t" в StreamWriter не работает должным образом в l oop с двойными значениями - PullRequest
0 голосов
/ 14 апреля 2020

Я хотел бы записать результаты некоторых вычислений в файл .txt. В результате получается двумерная матрица с двойными значениями.

Код выглядит следующим образом:

using (StreamWriter sw = new StreamWriter("output.txt"))
{
    for (int i = 0; i < _mSize; i++)
    {
        for (int j = 0; j < _mSize; j++)
        {
            if (j == _mSize - 1)
            {
                sw.Write(matrix[i, j]);
            }
            else
            {
                sw.Write(matrix[i, j]);
                sw.Write("\t");
            }
        }

        sw.WriteLine();
    }
}

И результат выглядит примерно так:

327353903757.616    33382579966.7657    -610295157931.538   316776523846.942    -173380022454.098   -461388805054.032   948277853349.852    118631006423.33 1568003828214.55    78534025626.3924    -263930036638.779   2223313944345.22    2940630569399.24    -165176724235.686   -1352807411840.3    764581906426.861
-259460605977.188   -447539597600.042   -3124759241119.99   -929203130376.986   -213516572421.899   391144184871.326    -2446238269585.87   379302868025.163    -1818091336805.81   -288798092833.074   -655659481681.372   -1498448339823.33   -1435464972188.97   -830549902638.884   -650649175335.582   -725206421515.479
-319840831518.706   -2516403650910.82   769645693652.79 -199535720261.936   -80400519331.1042   -723951708300.265   -381881978451.348   1026350945259.93    1548834396570.89    -1140747454821.2    1240846167929.94    -3188410647274.27   -642422277752.2 -3047608729143.56   -1366309764907.03   2819295607663.8
-1688698366831.53   1149401783280.44    -150430139898.4 -3007760062859.83   -791094347666.74    -1414465264594  -1286609932900.23   2536430945923.73    455960551771.616    -458406021880.105   1539086808585.16    1205203957111.46    -2600066711372.09   1437831009014.27    -594083327545.533   -1724581093220.9
749669141552.716    1172577925263.27    -989681794.110176   222107180167.189    1021086352918.43    490933382444.578    50139525601.5294    -518174849515.426   -1928777476308.78   -378236529297.613   244262826193.582    -2806299444467.07   -702343912175.042   -1636441561006.27   -266366723489.345   567886631297.715
-841834807419.529   3130344245101.81    -1685783162676.58   -2026705541873.09   160493399370.874    790805917278.736    443613243164.116    1852175982617.73    323146557417.622    -1238009736847.56   -2489625790927.85   661673131305.817    2411574370206.78    -373814010403.364   -1750712126900.4    -1576941266948.82
-607217673304.633   -638952877935.242   1078519895918.1 -2270477482587.59   -410340883737.832   -2264119790646.08   -1841565027377.3    2261179654647.82    1607641927322.8 -707293786677.447   928874387997.301    619164396624.24 -530711437053.312   511741943427.622    -2219955265457.8    -1310773818634.51
-104035796369.396   -902035785673.758   938581960216.357    -732891978620.923   -981543758974.761   -1506686042906.28   -654414700474.678   -465532120950.666   298788105176.015    280087017601.342    104008537594.614    913599401360.446    -498467029483.977   942561417794.816    367288436501.473    668105956987.307
-962022321201.368   -1912932113342.16   -957696066982.236   -343467426849.393   -1680649162722.66   1316416625542.72    576496110988.551    3112025793616.5 106363772914.636    2250800842252.43    345070055181.7  3664346590799.52    6752505870.64972    -403672609382.172   24268894695.8925    1689489691815.04
-2388816379956.99   -602886964963.677   1427602296490.52    -1729821478839.85   -51964454170.5175   1822423119234.95    717752197973.323    632319337615.292    -199243574406.633   -395550337924.227   599304610383.895    1470713557256.48    11399735609.0839    -1147596725739.24   401389365152.378    8157282186.29416
-1693103978173.14   989386774530.362    2907659526178.1 -2811261314627.55   356823558456.582    -319591758977.013   198575690036.046    643416025877.97 1616317237380.79    -1776134180488.81   999334341767.032    344892232102.338    1594152762899.56    -471951970730.009   -668802712025.263   -565192968092.561
-2357617663480.44   76744456363.1057    -280785379443.852   -2352272570458.66   412027938512.557    2067967649740.11    2511976310406.57    -831060300172.529   679942436393.378    -2365434402883.36   1272225694123.13    -540207314433.77    -2981826887583.67   -3134116246324.36   -1629313618872.79   999410826606.432
1613023256325.99    -453400909022.602   -641082966511.884   1725325256608.97    -324880607458.072   232844902610.88 141834299626.338    -1041061425177.12   -3361227005318.7    2014915773138.51    146262201406.081    1112699293932.61    -690202578860.517   827780767635.571    1483095642664.43    -1022012297787.71
-408018898391.413   -96116103628.22 416992021501.301    -531262958849.303   -2081851790385.43   676796478182.526    408919251217.419    -443136690892.802   841780411776.858    -2006650935466.08   -1853742199859.48   288950787382.04 748514299937.886    -1346708263354.65   -952800904444.521   956425916274.8
-569386776674.994   -233138503567.782   -31274411566.2453   -2579549684040.72   -1356843727226.01   315981072859.08 -98564222269.8076   802665821940.511    904138401312.517    830375508170.967    1187208558832.51    1504115884837.66    -1426884567601.84   250461061553.322    -408129831771.16    951031686769.47
-536800997150.714   978438977109.671    -2625347108780.62   -3616681751001.43   -767515594856.592   -1455535521335.03   -2177988010683.52   2845714092759.81    497319654548.942    -1751796295719.84   -1156151878504.91   -764322194503.285   -1495585847049.16   -32677269094.5144   -3144368304930.61   -3004804290301.16

Как вы можно увидеть иногда пробелы вместо вкладок. Мне интересно, почему это происходит и как я могу сделать это правильно?

Я пробовал разные версии, поэтому

sw.Write(" \t "); // with added spaces before and after

работает немного лучше, но все еще есть ошибки и уродливый способ сделать и

sw.Write(matrix[i, j] + "\t");

имеет тот же эффект, что и первое решение.

Буду признателен за любые предложения по решению этой проблемы.

Обновление: с тех пор проблема, кажется, не ясна: позиция не всегда одинакова из-за длины строки, это правильно, но здесь нет вкладки после второго значения:

948277853349.852    118631006423.33 1568003828214.55
...