我想知道下面的 Haskellcode 有哪个错误!
f :: Fractional a => a -> a -> a
f x y
| x > y = x - y
| otherwise = x + y
call = f 3.5 2.0
Run Code Online (Sandbox Code Playgroud)
我试图解决这个问题,但我找不到解决方案,因为 3.5 和 2.0 是浮点数,应该适用于小数类型。
嘿伙计们我在这里工作SW我有点需要帮助,你看我们需要制定一个方法,我们将简化分数.任何想法怎么样?这是我现在的代码(不介意dvalue方法它已经finsih我需要的只是简化方法)
public class Fraction {
public int num;
public int den;
public double dValue;
public void display()
{
System.out.println("Numerator: "+num);
System.out.println("Denominator: "+den);
}
public double dValue()
{
dValue = (double)num/den;
return dValue;
}
}
Run Code Online (Sandbox Code Playgroud)
public class FractionTest {
public static void main(String args[])
{
Fraction f = new Fraction();
f.num = 50;
f.den = 100;
f.display();
double d = f.dValue();
System.out.println(d);
}
}
Run Code Online (Sandbox Code Playgroud) 我正在进行一个分数分配,我提示用户输入两个分数,然后我对这两个分数进行加,减,乘和除.我知道我仍然需要减少分数,但我无法弄清楚为什么分母乘以10.如果我为frac1输入1 1/2,为frac2输入2 2/5,则分母为100而不是10太奇怪了..非常感谢!:)
// fraction9.cpp : main project file.
#include "stdafx.h"
#include<conio.h>
#include<iostream>
#include<string>
using namespace std;
class Fraction
{
private:
int whole;
int numerator; // may be any integer
int denominator; // should always be positive
public:
Fraction(); // Set numerator = 0, denominator = 1.
Fraction(int w, int n, int d=1); // constructor with parameters
// acts as conversion constructor
// operator overload as member
Fraction operator+ (const Fraction& f) const;
Fraction operator- (const Fraction& f) const;
Fraction …
Run Code Online (Sandbox Code Playgroud) 我无法理解为什么当我在代码中输入正常分数时,为什么我会得到无限值.除了GCD(最大公约数)之外的所有东西似乎都在起作用.
在这个地方有一个明显明显的逻辑错误吗?
我已经完成了我的研究并找到了问题的各种答案,我的意思是维基百科甚至给你编写代码,但是我想弄清楚如何使它按照我现在的编码方式工作.
#include <iostream>
#include <stdlib.h>
#include <cmath>
#include <math.h>
using namespace std;
class Fraction
{
private:
double num;
double den;
double fraction;
double temp;
public:
void setNum();
void setDen();
int getNum();
int getDen();
void lcdOutput();
void decOutput();
int gcd();
};
void Fraction::setNum(){
cout << "Enter a value for your numerator: " << endl;
cin >> num;
}
void Fraction::setDen(){
cout << "Enter a value for your denominator: " << endl;
cin >> den;
} …
Run Code Online (Sandbox Code Playgroud) C++
我想cout
float f = 2.3333
,但只有两位小数.我怎么做?我记得这样的事情,但它不起作用:
cout << f:2 << endl;
Run Code Online (Sandbox Code Playgroud) 我正在尝试计算double的小数部分的位数,但是出现问题并且我得到无限循环:
double pi = 3.141592;
int counter = 0;
for (; pi != int(pi); ++counter)
pi *= 10;
cout << counter << endl;
Run Code Online (Sandbox Code Playgroud)
我刚读过这个问题,但是我找不到一个好的解决方案.除了将数字转换为字符串和计数字符之外,真的没有更好的方法吗?我想有更正确的方法.
我有Python代码来解决一些递归,我希望它返回一些分数.
问题是我的代码返回荒谬的分数(这是正确的),但它们不是可能的最小分数,我知道它,因为我可以手动解决公式.
这是我的代码:
from __future__ import division
import sys
from fractions import Fraction
def t(n):
if n==0:
return 0
else:
return 1/(4-t(n-1))
print(Fraction(t(int(sys.argv[1]))))
Run Code Online (Sandbox Code Playgroud)
如果您运行此代码,python fraction.py 2
您应该有4/15,但这是我得到的:
4803839602528529/18014398509481984
Run Code Online (Sandbox Code Playgroud)
我认为这在数值上是正确的,当我计算它时,我得到0.26666666666666666(也许两个分数在0位数的x位数处不同).
这里有什么问题?
鉴于const auto foo = 13.42
我想得到数字小数部分,所以.42
我倾向于使用fmod
像:fmod(foo, 1.0)
但我也可以做foo / static_cast<int>(foo) - 1.0
或者或许其他一些神秘的方法.
我不会简单地使用动机fmod
吗?
在下面的代码中,为什么除非我放入term = 1.0/n
而不是 when ,否则我不会得到有效的结果term = 1/n
。我已将 term 声明为浮动,这还不够吗?
#include <stdio.h>
int main()
{
float sum = 0, term;
int n, i;
printf("enter the value of n:\n");
scanf("%d", &n);
term = 1.0 / n;
for(i = 1; i <= n; i++)
{
sum = term + sum;
}
printf("Sum = %.3f\n", sum);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 带分数支持的大数字:
我想在不损失精度的情况下执行数学运算。我怎样才能使用 JavaScript 来做到这一点?首先我尝试了decimal.js,但它没有保留精度,如下一个示例所示:
import {Decimal} from 'decimal.js';
const a1 = new Decimal(1);
const a2 = new Decimal(3);
console.log(a1.div(a2).toFraction()); // should be `1/3` but I get `33333333333333333333/100000000000000000000`
Run Code Online (Sandbox Code Playgroud)
接下来我尝试了fraction.js,但它不适用于大数字,例如:
import Fraction from 'fraction.js';
const n1 = new Fraction("99999999999999999999999999999999999999999999999");
const n2 = new Fraction("99999999999999999999999999999999999999999999990");
console.log(+(n1.sub(n2))) // should be 9, but I get 0
Run Code Online (Sandbox Code Playgroud)
是否有任何解决方案可以处理相对较大的数字(可以说与decimal.js
支撑相同)但具有高精度(与fraction.js
支撑相同)。
我检查了它在幕后的mathjs
用途,所以对于大量数据来说没有任何优势:fraction.js
import * as math from "mathjs";
const a1 = math.fraction(math.number("99999999999999999999999999999999999999999999999"))
const a2 = math.fraction(math.number("99999999999999999999999999999999999999999999990"))
console.log(+(math.subtract(a1, a2))) …
Run Code Online (Sandbox Code Playgroud) import sympy as sp
from fractions import Fraction
new_matrix_aux = [['X', 'B', 'X1', 'X2', 'X3', 'X4', 'X5', 'U1', 'U2'],
['X2', 10/3, 0, 1, 2/3, 1/3, -2/3, -1/3, 2/3],
['X1', 4/3, 1, 0, 2/3, -2/3, 1/3, 2/3, -1/3]]
z_function = "Z = 1 * X1 + 2 * X2 + 3 * X3 + 0 * X4 + 0 * X5 + M * U1 + M * U2"
lista_de_operaciones_zj = []
for j in range(1, len(new_matrix_aux[0])):
z = z_function
for …
Run Code Online (Sandbox Code Playgroud) 好的......让我改一下这个问题......
如何在不使用除法或转换加倍的情况下获得整数的x 16th ...
我不知道如何表示分数.我应该根据用户为两个分数输入的分子和分母将两个分数加在一起.活动要求我做的是将此作为印刷结果.
第一部分的分子是什么?1
第一部分的分母是多少?2
第二部分的分子是什么?2
第二部分的分母是多少?五
总和为1/2 + 2/5 = 9/10
问题后面的数字可以根据用户输入进行更改.
下面你可以看到我写的东西.
public class AddFractions extends ConsoleProgram
{
public void run()
{
int numeratorFirst = readInt("What is the numerator of the first fraction?");
int denominatorFirst = readInt("What is the denominator of the first fraction?");
int numeratorSecond = readInt("What is the numerator of the second fraction?");
int denominatorSecond = readInt("What is the denominator of the second fraction?");
}
}
Run Code Online (Sandbox Code Playgroud)