我需要将Double转换为符合某些条件的字符串:
因此,如果我的Double值为0.257894214
,我希望字符串为:+0.257
。
我测试了几行代码:
Double num = 0.257894214;
Double num2 = -0.257894214;
Double num3 = 0;
num.ToString("R") // 0,257894214
num2.ToString("R") // -0,257894214
num3.ToString("R") // 0
String.Format("{0:0.000}",num) // 0,258
String.Format("{0:0.000}",num2) // -0,258
String.Format("{0:0.000}",num3) // 0,000
num.ToString("0.000") // 0,258
num2.ToString("0.000") // -0,258
num3.ToString("0.000") // 0,000
num.ToString("+0.000;-0.000;0.000") // +0,258
num2.ToString("+0.000;-0.000;0.000") // -0,258
num3.ToString("+0.000;-0.000;0.000") // 0,000
String.Format("{0:+0.000;-0.000;0.000}",num) // +0,258
String.Format("{0:+0.000;-0.000;0.000}",num2) // -0,258
String.Format("{0:+0.000;-0.000;0.000}",num3) // 0,000
我感觉接近解决方案,但我现在完全失去了!
最后一行非常接近我正在搜索的内容...但Double值是舍入的...... :(
我希望我已经清楚了。 :) 提前谢谢。
Au revoir!
答案 0 :(得分:1)
如果我知道你发帖了,你所说的是你要截断小数点后三位而不是四舍五入。所以你得到的值是+0.257,-0.257和0.000
以下内容应该这样做:
首先定义一个函数
// truncates to 3 decimal places
static double Truncate(double num)
{
return Math.Truncate(num * 1000) / 1000.0;
}
现在尝试
x = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num));
y = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num2));
z = String.Format("{0:+0.000;-0.000;0.000}", Truncate(num3));
这应该适用于正数和负数。