作成日: 2019/08/21 最終更新日: 2021/05/26
文書種別
不具合
状況
修正済み
詳細
ROUND関数が不正な値を返す場合があります。
下記サンプルコードではC1セルには以下の数式が設定されています。
"ROUND(650 * 65.35, 0)"
650 * 65.35 = 42477.5となるため、 小数点部分が四捨五入され42478という結果が表示されるのが正しい動作ですがC1セルには42477が表示されます。
■サンプルコード(VB.NET)
下記サンプルコードではC1セルには以下の数式が設定されています。
"ROUND(650 * 65.35, 0)"
650 * 65.35 = 42477.5となるため、 小数点部分が四捨五入され42478という結果が表示されるのが正しい動作ですがC1セルには42477が表示されます。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ROUND関数の動作確認
FpSpread1.ActiveSheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1
FpSpread1.ActiveSheet.Columns(2).Formula = "ROUND(A1*B1,0)"
FpSpread1.ActiveSheet.SetValue(0, 0, 650)
FpSpread1.ActiveSheet.SetValue(0, 1, 65.35)
End Sub
' ROUND関数の動作確認
FpSpread1.ActiveSheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1
FpSpread1.ActiveSheet.Columns(2).Formula = "ROUND(A1*B1,0)"
FpSpread1.ActiveSheet.SetValue(0, 0, 650)
FpSpread1.ActiveSheet.SetValue(0, 1, 65.35)
End Sub
回避方法
Service Pack 4(v11.0.4505.2012)で修正済み。
Service Pack 4 を適用せずに対処する方法としては、旧形式の関数(FarPoint.CalcEngine名前空間内)をカスタム関数として使用することで現象が回避可能です。
※コードエディタ上には廃止された機能である旨の警告が表示されますが、問題ありません。
※Formulaプロパティに関数を設定する前に、上記のコードが実行されるようにしてください。
■サンプルコード(VB.NET)
※コードエディタ上には廃止された機能である旨の警告が表示されますが、問題ありません。
※Formulaプロパティに関数を設定する前に、上記のコードが実行されるようにしてください。
■サンプルコード(VB.NET)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ROUND関数の動作確認
FpSpread1.ActiveSheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1
' 回避策
FpSpread1.ActiveSheet.AddCustomFunction(FarPoint.CalcEngine.FunctionInfo.RoundFunction)
FpSpread1.ActiveSheet.Columns(2).Formula = "ROUND(A1*B1,0)"
FpSpread1.ActiveSheet.SetValue(0, 0, 650)
FpSpread1.ActiveSheet.SetValue(0, 1, 65.35)
End Sub
' ROUND関数の動作確認
FpSpread1.ActiveSheet.ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1
' 回避策
FpSpread1.ActiveSheet.AddCustomFunction(FarPoint.CalcEngine.FunctionInfo.RoundFunction)
FpSpread1.ActiveSheet.Columns(2).Formula = "ROUND(A1*B1,0)"
FpSpread1.ActiveSheet.SetValue(0, 0, 650)
FpSpread1.ActiveSheet.SetValue(0, 1, 65.35)
End Sub
旧文書番号
84394