StringBuilder.Append使用float正在截断值。它转换为什么?如何阻止它被截断?
AttributeOrder是类型float,构建字符串时我失去了精度。
if ( AttributeOrder != 0 )
{
if ( Result.Length > 0 )
{
Result.Append( " AND " );
}
Result.Append( COLUMN_ATTRIBUTE_ORDER );
Result.Append( "=" );
Result.Append( AttributeOrder );
}
Run Code Online (Sandbox Code Playgroud)
编辑:这是旧代码,我无法更改基础数据类型。SQL Server中的列为实数,数据类型为float。我需要将其float作为填充字符串显示出来,以用于其他目的,而不是像原来那样放宽精度。
Result.Append(AttributeOrder.ToString("G9"))
Run Code Online (Sandbox Code Playgroud)
或者,
Result.AppendFormat("{0}={1:G9}", COLUMN_ATTRIBUTE_ORDER, AttributeOrder)
Run Code Online (Sandbox Code Playgroud)
但是,您将不能从那里获得超过9位的精度float,并且数字8和9将不准确。
该float数据类型只能容纳七位数字的精确度。将值放入float变量后,您将不可避免地失去精度。为了存储SQL Server的所有24位精度,您需要使用decimaldatatype。
将变量更改为时decimal,Append将为您提供尽可能多的数字。
| 归档时间: |
|
| 查看次数: |
3211 次 |
| 最近记录: |