首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在xamarin中设置进度条的值

在xamarin中设置进度条的值
EN

Stack Overflow用户
提问于 2019-06-21 04:00:37
回答 2查看 448关注 0票数 0

我有一个来自服务器列表的从1到100的字段的值,用于显示该字段的进度。但我检查了一下,我们可以从0 to1向进度条提供值。我怎么才能把这个。我做了这样的事情,但没有起作用

代码语言:javascript
复制
Int Field = 12; 
Decimal d = Field / 100; 
Decimal dc = Math.Round(d,1); //to round to one decimal place 
return dc;

这是返回0。我也试过了:

代码语言:javascript
复制
double d = (double)(Progress / 100);
double dc = Math.Round(d, 1); 
return dc;

这也返回0。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-21 04:16:50

如果您希望获得最大精度,可以将旧值范围转换为新范围,并使用以下公式保持比率:

代码语言:javascript
复制
var OldRange = (OldMax - OldMin);  
var NewRange = (NewMax - NewMin);  
//i'm using round here has you requested, but its better to dont use it to achieve best results
var NewValue = Math.Round(((OldValue - OldMin) * NewRange) / OldRange) + NewMin, 1);

在您的示例中,以数字12为例,这将是:

代码语言:javascript
复制
var OldRange = 99 //(100 - 1);  
var NewRange = 1 //(1 - 0);  
var NewValue = Math.Round(((12 - 1) * NewRange) / OldRange) + 0, 1);

得出旧范围内的数字12是新范围内的0.1。

或者,如果您不关心旧的范围从1开始,新的范围从0开始,您可以只需除以100并对值进行舍入:

代码语言:javascript
复制
Int field = 12; 
Decimal d = field / 100; 
Decimal dc = Math.Round(d,1); //to round to one decimal place 
return dc;

请注意,在c#中,除法运算符是/,而不是%(即模数)

票数 2
EN

Stack Overflow用户

发布于 2019-06-21 13:41:47

发现"/“运算符在C#中不起作用

不,"/“运算符在C#中工作。

你得到一个零,因为Field / 100;int/int,结果是0;

Progress / 100相同,int/int取0;

让你的代码正常工作。您可以将该字段定义为Decimal类型:

代码语言:javascript
复制
    Decimal Field = 12;
    Decimal d = Field / 100;
    Decimal dc = Math.Round(d, 1);

或者将100转换为Decimal

代码语言:javascript
复制
   int Field = 12;
   Decimal d = Field /(Decimal)100;
   Decimal dc = Math.Round(d, 1);

how-can-i-divide-two-integers-to-get-a-double

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56693096

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档