3

私は数字を持っていますが、その長さは10桁を超えるため、INTEGER変数に保存できません。だから私はそれをLONG変数に保存しました。問題は、その LONG 変数で数値を追加すると、Round 値が返されることです。私はC#で働いています。

例:

long empId = 00000000001; 
long answer = empId + 1;  //  00000000001 + 1 = 2;
// answer == 2;

しかし、予想される答えは「00000000002」です。これを達成する方法..

前もって感謝します..

4

7 に答える 7

6

empId.ToString("D11")合計 11 の数字になるまで数値の左側にゼロを埋め込む場合は、使用を検討してください。これは ( C#System.Int64でも呼び出されます) の単なる文字列表現です。long

于 2012-06-07T13:30:17.197 に答える
3

あなたが数字について話しているとき、00000000002そして2まったく同じことを表しています。stringゼロで埋められたその数値の表現が必要な場合は、次のようにしてみてください。

answer.ToString().PadLeft(11, '0');

これにより、文字列の長さが11文字以上になり、空のスペースがゼロで埋められます。

于 2012-06-07T13:04:24.833 に答える
2

先頭の0は重要ではなく、数値の一部ではありません。これは単なるフォーマットのアーティファクトです。0を保持する場合は、数値を適切なフォーマット文字列を使用して文字列に変換し直します。

long value = ...
string s = value.ToString("0000000000");
于 2012-06-07T13:03:58.137 に答える
1

00000000002と2は同じlong値です。最初にゼロにしたい場合は、Long.ToString(文字列形式)メソッドを使用できます。

string strAnswer = answer.ToString("00000000000");
于 2012-06-07T13:04:27.267 に答える
0

intsまたはlongsを追加し、それを文字列に変換して、string.PadLeftを呼び出すだけです。

ドキュメントから:

指定された全長で、指定されたUnicode文字を左側にパディングすることにより、このインスタンスの文字を右揃えにする新しい文字列を返します。

于 2012-06-07T13:04:27.963 に答える
0

あなたの番号00000000001は、数字として表される場合、実際には1にすぎません。前に複数の 0 を表示したい場合は、表示時にString.PadLeftを使用することをお勧めします。例えば:

long empId = 00000000001; // Actually sets empID to 1

long answer = empId + 1; // 1 + 1 = 2

string formattedAnswer = 1.ToString().PadLeft(10, '0'); // Creates a string of "0000000001"
于 2012-06-07T13:05:41.743 に答える