C# double类型数值怎样获得是精确到多少位小数(求精度)

【注意】我不是求double类型的精度,是一个数值的精度。比如doublea=0.0;怎么处理才知道a是精确到小数点后1位。a.toString()后得到的是0,a.to... 【注意】我不是求double类型的精度,是一个数值的精度。
比如 double a=0.0;怎么处理才知道a是精确到小数点后1位。
a.toString()后得到的是0,a.toString("f")得到的是0.00,都不符合我的要求。

也就是说
0.120我要获得3
0.0我要获得1
2我要获得0
请务必处理好以0结尾的情况。
例如:2.12000我要得到5
请用0.0测试能否得到1
展开
 我来答
xy404750389
2014-01-21 · TA获得超过505个赞
知道小有建树答主
回答量:303
采纳率:0%
帮助的人:149万
展开全部
转换成字符串,判断小数点位置

首先判断是否有小数点,如果没有,得到结果0

如果有小数点,使用indexof判断小数点位置,然后根据字符串总长度,如123.45,得到小数点位置为3,总长度为6,那么就得到的结果就是6-1-3=2,得到结论,如果小数点位置在a,总长度为b,那么结果就是b-1-a

private int GetValue(string Value) { string strValue = Value.ToString(); if (strValue.Contains(".")) { int MaxLength = strValue.Length; int Index = strValue.IndexOf("."); return MaxLength - 1 - Index; } else { return 0; } }

看不懂再问
更多追问追答
追问
现在的问题是0.0转换为字符串后得到的是0而不是0.0
追答
那你的值怎么会有0.0的显示,数值不会有0.0这种的,都是0
84许
2014-01-21 · TA获得超过379个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:228万
展开全部
需求是什麼,比如 double a = 0.000 是怎麼产生的
如果是输入的字符串,可以通过 string aa = "0.000" 获取精度
再转成double计算,舍入先前的精度获得需要的结果
追问
如果在底层处理不了,那就只能在用户输入的地方处理了。也就是你说的这个方法。
追答
string userinput = "0";
int precision = 
    userinput.IndexOf('.') < 0 ? 0 : userinput.Substring(userinput.IndexOf('.')).Length - 1;
double myvalue = 0.123456789;
result.Text = myvalue.ToString("f" + precision.ToString());
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小小小馒头仔
2014-01-21 · TA获得超过449个赞
知道小有建树答主
回答量:609
采纳率:100%
帮助的人:642万
展开全部

        double d = 4.589;
        int precission = 0;
        string[] strArr = d.ToString().Split('.');//分开整数与小数部分
        if (strArr.GetLength(0) == 2)
        {
            precission = strArr[1].Length;
        }
        else
            precission = 0;
更多追问追答
追问
假设d=0.0,我无法得到想要的结果1
追答

刚刚试了一下,如果你要转换的对象是string的话"0.0",用我的方法是可以的,但是如果是给double变量赋值0.0的话,这个变量会自动把末尾的0自动去掉.

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tn瓶邪
2015-08-14 · TA获得超过1882个赞
知道小有建树答主
回答量:610
采纳率:98%
帮助的人:113万
展开全部
1)
float f = 321.12345F;
f.ToString("0.00");
这样做无论f是不是整数,都将加上2位小数。

2)
float f = 321.12345F;
f.ToString(".##");
这样做最多显示2位小数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
流浪时的思念
2014-01-21 · TA获得超过145个赞
知道答主
回答量:45
采纳率:0%
帮助的人:29.4万
展开全部
double num = 0.11;
var pos = num.ToString().IndexOf('.');
var len = num.ToString().Length - pos-1;

如果没有小数的话还需要根据pos判断一下。
追问
如果num=0.1100
那么num.ToString()的结果是0.11而不是0.1100
所以这样不行
追答
办法1.根据你上面的描述,字符从文本框提出来以后先判断长度,后转换为数字;
办法2.文本框字符+你自己定义的特殊字符(0.1100+"~"),判断后replace去掉"~"然后保存。

不是大伽只能出这种馊主意啦~哇哈哈
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式