首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将小数格式的任何值或变量相加25%

如何将小数格式的任何值或变量相加25%
EN

Stack Overflow用户
提问于 2018-11-19 19:55:57
回答 3查看 287关注 0票数 0

我的代码在这里

代码语言:javascript
复制
    if (dUIAnswer == "yes" || dUIAnswer == "ya")
    {
        quote += (25 / 100) * quote;            
    }

    if (coverageType == "full coverage")
        quote += (50 / 100) * quote; ;


   return quote;

如果用户有酒后驾驶,我基本上会尝试将“报价”的值增加25%。请给我一个简单的解决方案的代码是可能的。

EN

回答 3

Stack Overflow用户

发布于 2018-11-19 19:59:21

25 / 100执行整数除法,因此结果是0 (类型为int)。将它们设置为十进制,即25.0M / 100.0M或更好:

代码语言:javascript
复制
quote *= 1.25M;
票数 3
EN

Stack Overflow用户

发布于 2018-11-19 19:59:45

将当前值增加25%,使其成为当前值的125%,因此将其乘以1.25 (125%):

代码语言:javascript
复制
if (dUIAnswer == "yes" || dUIAnswer == "ya")
        quote *= 1.25M;         

    if (coverageType == "full coverage")
        quote *= 1.5M;
票数 0
EN

Stack Overflow用户

发布于 2018-11-19 20:01:23

问题是:在C#和类似的语言(C,C++,...)中,25 / 10050 / 100的结果是0

为什么?

在C#中,除以整数(intlong等)时通过整数,小数部分被截断- 0.25变为0

因此,有一些解决方案:

1)只需在代码中编写0.25 (或0.5):

代码语言:javascript
复制
if (dUIAnswer == "yes" || dUIAnswer == "ya")
{
    quote += 0.25 * quote;            
}

if (coverageType == "full coverage")
    quote += 0.5 * quote; ;


return quote;

2)将其中一个numebrs转换为doublefloat,方法是附加后缀D (对于double)或F (对于float),或者在末尾添加一个.0 (这样做是一个double),或者使用(<type>)转换它

代码语言:javascript
复制
if (dUIAnswer == "yes" || dUIAnswer == "ya")
{
    quote += (25.0 / 100D) * quote;            
}

if (coverageType == "full coverage")
    quote += ((float)50 / 100) * quote; ;


return quote;

(您也可以显式地或通过附加M作为后缀将其转换为decimal )。

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

https://stackoverflow.com/questions/53374123

复制
相关文章

相似问题

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