作成日: 2019/09/30 最終更新日: 2019/12/20
文書種別
不具合
状況
修正済み
詳細
負数に対してROUNDDOWN関数およびROUNDUP関数を使用すると、10.0J以前やExcelの計算結果とは異なり、不正な値になる場合があります。
■サンプルコード(VB.NET)
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.Cells(0, 0).Value = 3.14159
FpSpread1.ActiveSheet.Cells(1, 0).Value = 1.963
FpSpread1.ActiveSheet.Cells(2, 0).Value = -3.14159
FpSpread1.ActiveSheet.Cells(3, 0).Value = -1.963
FpSpread1.ActiveSheet.Cells(0, 1).Formula = "ROUNDDOWN(A1,1)"
FpSpread1.ActiveSheet.Cells(1, 1).Formula = "ROUNDUP(A2,0)"
FpSpread1.ActiveSheet.Cells(2, 1).Formula = "ROUNDDOWN(A3,1)"
FpSpread1.ActiveSheet.Cells(3, 1).Formula = "ROUNDUP(A4,0)"
End Sub
FpSpread1.ActiveSheet.Cells(0, 0).Value = 3.14159
FpSpread1.ActiveSheet.Cells(1, 0).Value = 1.963
FpSpread1.ActiveSheet.Cells(2, 0).Value = -3.14159
FpSpread1.ActiveSheet.Cells(3, 0).Value = -1.963
FpSpread1.ActiveSheet.Cells(0, 1).Formula = "ROUNDDOWN(A1,1)"
FpSpread1.ActiveSheet.Cells(1, 1).Formula = "ROUNDUP(A2,0)"
FpSpread1.ActiveSheet.Cells(2, 1).Formula = "ROUNDDOWN(A3,1)"
FpSpread1.ActiveSheet.Cells(3, 1).Formula = "ROUNDUP(A4,0)"
End Sub
回避方法
Service Pack 3(v12.0.4504.2012 )で修正済み。
Service Pack を適用せずに対処する方法としては、旧形式の関数(FarPoint.CalcEngine名前空間内)をカスタム関数として使用することで現象が回避可能です。
※コードエディタ上には廃止された機能である旨の警告が表示されますが、問題ありません。
※Formulaプロパティに関数を設定する前に、上記のコードが実行されるようにしてください。
■サンプルコード(VB.NET)
Service Pack を適用せずに対処する方法としては、旧形式の関数(FarPoint.CalcEngine名前空間内)をカスタム関数として使用することで現象が回避可能です。
※コードエディタ上には廃止された機能である旨の警告が表示されますが、問題ありません。
※Formulaプロパティに関数を設定する前に、上記のコードが実行されるようにしてください。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 回避策
FpSpread1.ActiveSheet.AddCustomFunction(New FarPoint.CalcEngine.RoundDownFunctionInfo())
FpSpread1.ActiveSheet.AddCustomFunction(New FarPoint.CalcEngine.RoundUpFunctionInfo())
FpSpread1.ActiveSheet.Cells(0, 0).Value = 3.14159
FpSpread1.ActiveSheet.Cells(1, 0).Value = 1.963
FpSpread1.ActiveSheet.Cells(2, 0).Value = -3.14159
FpSpread1.ActiveSheet.Cells(3, 0).Value = -1.963
FpSpread1.ActiveSheet.Cells(0, 1).Formula = "ROUNDDOWN(A1,1)"
FpSpread1.ActiveSheet.Cells(1, 1).Formula = "ROUNDUP(A2,0)"
FpSpread1.ActiveSheet.Cells(2, 1).Formula = "ROUNDDOWN(A3,1)"
FpSpread1.ActiveSheet.Cells(3, 1).Formula = "ROUNDUP(A4,0)"
End Sub
' 回避策
FpSpread1.ActiveSheet.AddCustomFunction(New FarPoint.CalcEngine.RoundDownFunctionInfo())
FpSpread1.ActiveSheet.AddCustomFunction(New FarPoint.CalcEngine.RoundUpFunctionInfo())
FpSpread1.ActiveSheet.Cells(0, 0).Value = 3.14159
FpSpread1.ActiveSheet.Cells(1, 0).Value = 1.963
FpSpread1.ActiveSheet.Cells(2, 0).Value = -3.14159
FpSpread1.ActiveSheet.Cells(3, 0).Value = -1.963
FpSpread1.ActiveSheet.Cells(0, 1).Formula = "ROUNDDOWN(A1,1)"
FpSpread1.ActiveSheet.Cells(1, 1).Formula = "ROUNDUP(A2,0)"
FpSpread1.ActiveSheet.Cells(2, 1).Formula = "ROUNDDOWN(A3,1)"
FpSpread1.ActiveSheet.Cells(3, 1).Formula = "ROUNDUP(A4,0)"
End Sub
旧文書番号
84522