Files
zszq-trs/UnitTestProject/Modules/SwapModule/SwapFlowFr007EntryPrecisionTest.cs
hjhan 952295a78a fix(fr007): 界面手工录入定盘精度 4→6 位——1.4150% 不再被截成 1.4200%
UAT 实测发现(EQD-6968 测试期间):录入 1.4150 落库变 0.0142。两层拆解:
- ÷100 为设计(界面按百分数录入,SwapflowList.js toNumber(value/100,6) 已传 6 位)
- Math.Round(price,4) 为精度截断:FR007 官方发布百分数下 4 位=小数 6 位,
  4 位舍入只保百分数下 2 位,丢 0.5bp(1 亿本金 7 天约 96 元)
修复:抽 RoundFr007Price(6位) 替换三处 Round(,4),与前端 6 位对齐;
DB 列 double(18,10) 已验证容纳;bond-sync 自动同步链(BigDecimal 全精度透传)
不经此路径零影响。已截断的历史行(如 2026-08-19 的 0.0142)不自愈,需重录。
附带修复 GLMS20260819Fr007TradeDiscoveryTest 编译错误:@"" 逐字字符串内
应用 "" 转义、UnderlyingCode→FutureContractId(实际列名)、EF6 Database.Connection
→ EF Core GetDbConnection()。

验证:SwapFlowFr007EntryPrecisionTest 2/2;全量 985 例 145 败与基线 diff=0
2026-08-19 14:29:16 +08:00

31 lines
1.4 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
namespace YLErp.Modules.SwapModule
{
/// <summary>
/// FR007 界面手工录入落库精度契约(EQD-6968 测试期间发现):
/// FR007 官方发布为百分数下 4 位(1.4150%),前端 ÷100 转 6 位小数(0.014150)传后端;
/// 原 Math.Round(,4) 截成 0.0142(丢 0.5bp1 亿本金 7 天约 96 元)。修复后保留 6 位。
/// bond-sync 自动同步链(BigDecimal 全精度)不经此路径,无影响。
/// </summary>
[TestClass]
public class SwapFlowFr007EntryPrecisionTest
{
[TestMethod]
public void 官方四位百分数定盘_六位小数全精度保留()
{
// 2026-08-19 官方发布 1.4150% —— 前端 1.4150/100 后的入参
Assert.AreEqual(0.01415, SwapFlowService.RoundFr007Price(1.4150 / 100.0), 1e-9,
"1.4150% 落库应保留 0.014150,不得截成 0.0142(丢 0.5bp");
Assert.AreEqual(0.021137, SwapFlowService.RoundFr007Price(2.1137 / 100.0), 1e-9,
"百分数下第3、4位(小数第5、6位)必须保留");
}
[TestMethod]
public void 常规两位百分数定盘_行为不变()
{
// 历史常见形态(2.11% 等):修复前后结果一致
Assert.AreEqual(0.0211, SwapFlowService.RoundFr007Price(0.0211), 0d);
Assert.AreEqual(0.0142, SwapFlowService.RoundFr007Price(0.0142), 0d);
}
}
}