我有一个双值,如下所示
double propertyValue = 1994.7755474452554;
当我将此双精度值转换为字符串
时string value = propertyValue.ToString();
它给出了值"1994.77554744526"
已将四舍五入最后一位数字2554
改为26
。
但我不想围绕价值。分享您的想法。
答案 0 :(得分:3)
默认情况下,Double的.ToString()方法返回15位精度。如果你想要内部双值保存的完整17位数,你需要通过" G17"方法的格式说明符。
String s = value.ToString("G17");
这将防止在转换为字符串时舍入double值。
value = propertyValue.ToString("G17");
答案 1 :(得分:1)
您可以使用小数类型。
decimal propertyValue = 1994.7755474452554M;
答案 2 :(得分:1)
我无法重现不当行为;您已经体验过代表效果:它<input type="text" name="text1" id="text1" value="" onblur="evalthevalue(this.value, 'text2')" />
<input type="text" name="text2" id="text2" value="" />
<script type="text/javascript">
function evalthevalue(inputVal, idToReplace)
{
console.log('inputVal'+inputVal);
console.log('idToReplace'+idToReplace);
console.log('eval'+eval(inputVal.trim()));
document.getElementById(idToReplace).value = eval(inputVal.trim());
}
</script>
会ToString()
这样。
double
结果是 string source = "1994.7755474452554";
double d = double.Parse(source, CultureInfo.InvariantCulture);
string test = d.ToString("R", CultureInfo.InvariantCulture);
Console.Write(source.Equals(test) ? "OK" : "Rounded !!!");
。请注意OK
格式字符串:
往返(&#34; R&#34;)格式说明符
https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx#RFormatString
答案 3 :(得分:0)
您可以将double
投射到decimal
并使用默认的ToString()
,如下所示:
Double propertyValue = 1994.77554744526;
var str = ((decimal)propertyValue).ToString();
//str will hold 1994.77554744526