2988 保留小数 2

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
 
题目描述 Description

这个难度是吸引你点进来的。(其实难度挺大)

保留小数 的加强版。加强了数据和描述。

有一个实数,要求保留k位小数。请输出结果。

输入描述 Input Description

两行。

第一行,要保留的数;

第二行,k

输出描述 Output Description

输出保留小数的结果。(四舍五入)

样例输入 Sample Input

(样例1)

8

2

(样例2)

7.03

1

(样例3)

7.0003

0

(样例4)

9.9

-1

(样例5)

0.99

3

(样例6)

-9999.2

0

样例输出 Sample Output

(样例1)8.00

(样例2)7.0

(样例3)7

(样例4)10

(样例5)0.990

(样例6)-9999

数据范围及提示 Data Size & Hint

k在longlong范围内;

要保留的小数在10000位以内。

如果k为负数,则向前保留。

要保留的小数可以为负数。

/*
这个题竟然是白银题!
可怜的我连怎么保留负数位都不知道!
╮(╯▽╰)╭
无良的我只能粘题解了
*/
#include<iostream>
#include<string>
using namespace std;
string process(string s,long long k)
{
bool negative=s.at()=='-';
if(negative) s=s.substr(,s.size()-);
unsigned point=s.find('.');
if(point == string::npos)
{
s.append(".");
point=s.size()-;
}
if(k>)
{
if(point+(unsigned)k>=s.size())
{
int length=point+k-s.size()+;
int i;
for(i=;i<length;i++)s.append("");
if(negative)s='-'+s;
return s;
}
else
{
string result=s.substr(,point+k+);
if(point+(unsigned)k+<s.size()&&s.at(point+k+)>'')
{
int i=point+k;
while(i>=&&(result.at(i)=='.'||result.at(i)==''))
{
if(result.at(i)=='')result.at(i)='';
--i;
}
if(i>=)++result.at(i);
else result=''+result;
}
if(negative)result = '-' + result;
return result;
}
}
else if(k==)
{
string result=s.substr(,point);
if(point+<s.size()&&s.at(point+)>'')
{
int i=point-;
while(i>=&&result.at(i)=='')result.at(i--)='';
if(i>=)++result.at(i);
else result=''+result;
}
if(negative)result='-'+result;
return result;
}
else
{
string result=s.substr(,point);
long long i=;
while(k--<-)
{
result.at(result.size()-i)='';
++i;
}
bool up=result.at(result.size()-i)>'';
result.at(result.size()-i)='';
if(up)
{
i=result.size()-i-;
while(i>=&&result.at(i)=='')result.at(i--) = '';
if(i>=)++result.at(i);
else result = '' + result;
}
if(negative)result='-'+result;
return result;
}
}
int main()
{
string s;
long long k;
cin>>s>>k;
cout<<process(s, k)<<endl;
return ;
}

codevs 2988 保留小数 2的更多相关文章

  1. codevs 2894 保留小数

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给你一个实数,小数点后不超过50位,请你保留到小数点后n位(四舍五入!!!) 输 ...

  2. 格式化 float 类型,保留小数点后1位

    """  练习 :   小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,   并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ...

  3. c#保留小数点后位数的方法

    Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...

  4. 总结C#保留小数位数及百分号处理

    方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...

  5. c++保留小数问题,如有不足或错误,欢迎指出

    #include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...

  6. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

  7. java中double变量保留小数问题

    (转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...

  8. input内强制保留小数点后两位 位数不足时自动补0

    input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...

  9. php number_format()保留小数点后几位

    [PHP_保留两位小数的相关函数] php保留两位小数并且四舍五入 Php代码   1     $num = 123213.666666;  2     echo sprintf("%.2f ...

随机推荐

  1. [C#6] 4-string 插值

    0. 目录 C#6 新增特性目录 1. 老版本的代码 internal class Person { public string Name { get; set; } public int Age { ...

  2. 在 ASP.NET MVC 中充分利用 WebGrid (microsoft 官方示例)

    在 ASP.NET MVC 中充分利用 WebGrid https://msdn.microsoft.com/zh-cn/magazine/hh288075.aspx Stuart Leeks 下载代 ...

  3. xp_sendmail: 由于邮件错误 0x80004005 而失败

    今天收到一封邮件说我们的一台SQL SERVER 2000服务器发送邮件有问题.我测试中发现了如下错误: exec xp_sendmail 'Konglb@esquel.com','hello, 12 ...

  4. CSS white-space 属性

    实例 规定段落中的文本不进行换行: p { white-space: nowrap } nowrap:文本不会换行,文本会在在同一行上继续,直到遇到 <br> 标签为止.

  5. PHP的错误机制总结

    PHP的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课. 特别说明:文章的PHP版本使用5.5.32 PHP的错误级别 首先需要了解php有哪些错误.截至到php5.5,一 ...

  6. 看懂Oracle执行计划

    最近一直在跟Oracle打交道,从最初的一脸懵逼到现在的略有所知,也来总结一下自己最近所学,不定时更新ing- 一:什么是Oracle执行计划? 执行计划是一条查询语句在Oracle中的执行过程或访问 ...

  7. 如何穿越到android底层

    对于android开发,实际上大部分工作都是在应用层,但为了体现"技术含量",以及"知其所以然",以便在遇到问题是不至于束手无策.因此有必要了解底层的工作机制. ...

  8. Centos 6.5 Zookeeper 安装

    tar -xvf zookeeper-3.4.8.tar.gz 修改配置文件 测试 上传启动脚本,内容如下: #!/bin/bash #chkconfig:2345 20 90 #descriptio ...

  9. JavaScript 动态插入 CSS

    写组件时有时想把一些组件特性相关的 CSS 样式封装在 JS 里,这样更内聚,改起来方便.JS 动态插入 CSS 两个步骤就可以 创建一个 style 对象 使用 stylesheet 的 inser ...

  10. [WPF系列]-参考文献

      DataTemplates Data Templating Overview Styling and Templating DataTemplate Class FrameworkTemplate ...