如果小数为零,则忽略但不为零,需要读入前两个
"35.0" or "35.0000" = 35
"35.0193" = 35.01
"35.98759" = 35.98
有什么想法吗?
var splitSku4 = value.Split('.');
if (splitSku4.Length > 1)
{
if (!splitSku4[1].StartsWith("0") || !splitSku4[1].StartsWith("00"))
{
sku4 = string.Format("{0}.{1}", splitSku4[0], splitSku4[1].Substring(0, 2));
}
}
此时陷入困境
答案 0 :(得分:0)
如果您的字符串包含数值,则可以使用其中一种Convert方法(例如Convert.ToDouble)或使用与目标数据类型关联的Parse或TryParse方法之一进行转换(例如Double.Parse)。
示例:
var input = "35.98759";
var number = double.Parse(input);
或者
var number = Convert.ToDouble(input);
如果您将值存储在数字数据类型中,则可以使用Math.Round删除最低有效数字
var input = "35.98759";
var number = double.Parse(input);
var numberToTwoDecimals = Math.Round(number, 2);
如果你总是想要向下舍入,有几种方法可以做到,但在这种情况下最简单的方法是在舍入数字之前减去0.005。
var result = Math.Round(number - 0.005F, 2);
删除小数后,如果需要,可以转换回字符串:
var outputString = result.ToString("0.00");
结果:
35.98
答案 1 :(得分:0)
另一种方法:
var number = 2.56832;
string newnumber = string.Format("{0:0.00}", number )); // formats to 2 decimal places
string[] split = newnumber.Split('.'); //split and remove '.'
if(Convert.ToInt16(split[1]) == 0){ //convert second index to number
var final = split[0];
}else{
var final = newnumber;
}
或一行:
var number = 2.56832;
string newnumber = string.Format("{0:0.00}", number ));
string[] split = newnumber.Split('.'); //split and remove '.'
var final = Convert.ToInt16(split[1]) == 0 ? split[0] : newnumber;