私は、非常に古い古典的な ASP/VBScript/Access Web サイトを「現在の」サイトに変換する作業を引き受けました。ご想像のとおり、ほとんどの作業は簡単にやり直すことができましたが、文書化されていない一連の計算に依存するレポート ページがあるため、彼のコード/数式を使用する必要がありますが、それらを C# に移動する必要があります。 .
完全な開示のために、Access データベースを問題なく SQL Server にインポートしました。EntityFramewok PowerTools (Code First) を使用して、新しいデータベースをリバース エンジニアリングし、.edmx ファイルを作成しました。EntityFramework が私のために .edmx を作成したとき、C# クラスの nullable Doubles (Double?) としてデータベース内の float であるフィールドを定義していることに気付きました。 float を nullable double に変換する方法は?
私が疑わしいと思うもう 1 つの場所は、丸み付けです。明らかに、丸めに関する数学は変更されていませんが、VBScript と C# には、丸めの方法に既知の違いがあるのではないかと思います。
したがって、これらの行は VBScript で
varA1=oDataRs("boundData")
varB1i=varA1*3.0689
varB1=round(varB1i,3)
これがC#になります
var newVal = Math.Round(boundData.Value * 3.0689,3);
データベースから出てきたときにそれを操作するだけです。そうしないとDoubleを乗算できないため、.Valueを使用する必要がありますか? そしてダブル。
値は非常に近いですが、非常に重要なデータで約 .036 ずれており、その理由がわかりません。