maxscript 浮点数精度
mxs
num = "261599199.49" as float -- 2.61599e+08
formattedPrint num format:".2f" --"261599200.00"
在mxs中从字符串转换到 double 或 float 都会丢失精度
在c#中这个数是正确的
var num = double.Parse("261599199.49");
Console.WriteLine(num); //261599199.49
但是在3dmax中调用
.net的double又会被转换为3dmax的double
(dotNetClass "System.Double").Parse "261599199.49" //2.61599d+08
当客户对 "261599199.49" as float + 0
等于 261599200.00
感到奇怪的时候
应该如何保证计算的精度?
- 回到小学数学的知识,造一个字符串相加的函数
- 用c#编译一个dll使用,结果必须要字符串,防止被类型转换