问题描述
DbcGenerator 使用普通字符串插值输出 DBC 数值,因此结果受到当前系统 CultureInfo.CurrentCulture 影响。
在 de-DE、fr-FR 等使用逗号作为小数分隔符的区域设置下,数值 0.5 可能被输出为 0,5。
DBC 信号定义本身也使用逗号分隔 Factor 和 Offset:
如果小数点被转换为逗号,就可能生成无法解析或语义错误的 DBC。
确认环境:
- 分支:
master
- 提交:
a736f3b850bb454268093b8c1a409627649393e8
- 文件:
EasyDbc/Generators/DbcGenerator.cs
复现步骤
- 将当前线程区域设置改成
de-DE:
CultureInfo.CurrentCulture = new CultureInfo("de-DE");
- 创建 Factor 为
0.5、Offset 为 -1.25 的信号。
- 使用
DbcGenerator 输出 DBC。
- 检查生成的信号定义。
实际结果
小数可能使用逗号分隔,例如:
该文本无法再明确区分两个数值字段。
FLOAT 属性默认值、实际值、最小值和最大值也存在相同风险。
期望结果
DBC 数字应始终使用点号作为小数分隔符,与操作系统区域设置无关:
建议修复方式
所有输出到 DBC 语法中的数值都应使用:
CultureInfo.InvariantCulture
建议覆盖:
- Signal Factor
- Signal Offset
- Signal Minimum
- Signal Maximum
- FLOAT 属性范围
- FLOAT 属性默认值
- FLOAT 属性实际值
问题描述
DbcGenerator使用普通字符串插值输出 DBC 数值,因此结果受到当前系统CultureInfo.CurrentCulture影响。在
de-DE、fr-FR等使用逗号作为小数分隔符的区域设置下,数值0.5可能被输出为0,5。DBC 信号定义本身也使用逗号分隔 Factor 和 Offset:
如果小数点被转换为逗号,就可能生成无法解析或语义错误的 DBC。
确认环境:
mastera736f3b850bb454268093b8c1a409627649393e8EasyDbc/Generators/DbcGenerator.cs复现步骤
de-DE:0.5、Offset 为-1.25的信号。DbcGenerator输出 DBC。实际结果
小数可能使用逗号分隔,例如:
该文本无法再明确区分两个数值字段。
FLOAT 属性默认值、实际值、最小值和最大值也存在相同风险。
期望结果
DBC 数字应始终使用点号作为小数分隔符,与操作系统区域设置无关:
建议修复方式
所有输出到 DBC 语法中的数值都应使用:
建议覆盖: