获得一个只有3个小数和+/-符号的往返Double
本文关键字:符号 Double 小数 3个 一个 | 更新日期: 2023-09-27 18:18:01
我需要根据某些条件将Double转换为String:
- 我不想要一个四舍五入值
- 逗号后只有3位数字
- +或-符号和开头。
- (如果双值为0,则额外:0.000)(不是最重要的)
所以,如果我的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值是四舍五入的…(
我希望我已经说清楚了。:)提前谢谢。再见!
如果我理解你的帖子,你说的是你想在小数点后3位截断,而不是四舍五入。所以你得到的值是+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));