昨天遇到一个奇怪的问题,就是float->CString时,float值为0.701407,转换为CString类型就变为0.7014068了,代码如下:
原来是Format这个method在搞怪。
首先看Format的声明:
function Format(const Format: string; const Args: array of const):
格式指令具有以下的形式:
"%" [index ":"] ["-"] [width] ["." prec] type
它是以"%"开始,而以type结束,type表示一个具体的类型。中间是用来
格式化type类型的指令字符,是可选的。
其中type中f和g是有区别的
f 对应浮点数
g 这个只能对应浮点型,且它会将值中多余的数去掉
比如将上面代码中的strCol.Format("%f",znum)改为strCol.Format("%g",znum),则就不会输出0.7014068了,会准确输出0.701407
但是为什么type f输出会有差错呢?待续。。。
znum=((float)aget[z]-average)/standardvariance;
strCol.Format("%f",znum);
原来是Format这个method在搞怪。
首先看Format的声明:
function Format(const Format: string; const Args: array of const):
格式指令具有以下的形式:
"%" [index ":"] ["-"] [width] ["." prec] type
它是以"%"开始,而以type结束,type表示一个具体的类型。中间是用来
格式化type类型的指令字符,是可选的。
其中type中f和g是有区别的
f 对应浮点数
g 这个只能对应浮点型,且它会将值中多余的数去掉
比如将上面代码中的strCol.Format("%f",znum)改为strCol.Format("%g",znum),则就不会输出0.7014068了,会准确输出0.701407
但是为什么type f输出会有差错呢?待续。。。